PDA

Просмотр полной версии : Как добавить ActionScript в Media Components


Agro
04.06.2006, 21:55
У меня такая проблема, мне нужно добавить NetStream.setBufferTime() в MediaController, то есть мне нужно контролировать размер части flv файла записывающейся в буффер внутри медиа компонента. И, если кто знает, какая величина буффера задана по умолчанию. А вообще, хотелось бы знать, как можно добавить ActionScript в любой флеш компонент. Заранее благодарен.

iNils
04.06.2006, 22:12
В MediaController вроде этого нет, но в FLVPlayback есть точно.
Я про буффер.

Agro
04.06.2006, 22:22
А что такое FLVPlayback, я знаю только MediaPlayback. Я работаю в 7-ой версии Флеш и FLVPlayback не вижу среди медиа компонентов. А как насчёт "добавить ActionScript в любой флеш компонент", можешь что-нибудь подсказать?

iNils
04.06.2006, 22:37
FLVPlayback это из 8-ки.
Про добавить не знаю, я очень редко использую стандартные компоненты.

Agro
04.06.2006, 22:48
Про добавить не знаю, я очень редко использую стандартные компоненты.
Я тоже очень редко использую стандартные компоненты, но задумался последнее время, а правильно ли это. Они могут очень облегчить жизнь.

iNils
04.06.2006, 22:53
Я тоже очень редко использую стандартные компоненты, но задумался последнее время, а правильно ли это. Они могут очень облегчить жизнь.
Или затруднить :)
Подожди ответа знатоков компонентов, может что и скажут.

Agro
04.06.2006, 23:59
Спасибо. Будем ждать.

Nirth
05.06.2006, 02:47
Я бы не стал ничего добавлять, а сдела оболочку, имхо удобней ввиде класса
в классе продублировать нужные тебе методы, и добавить свои.

Agro
05.06.2006, 03:20
А медиа компоненты какой это класс, с чего наследовать?

iNils
05.06.2006, 03:23
Media

Nirth
05.06.2006, 03:25
я же говорю наследовать не стоит, тебе нужно будет добавлять графику и тд, щас искал в хелпе, не нашел где, нашел в хелпе по Flex 1.5, но аналогичные действия во флэше, не дали результата.

Сделать лучше думаю так.
Без класса:
Вставить в мувик твой медиа контролер и просто дублировать методы, нужные тебе
например

function displayFull() {
//myMedia - экземпляр медиа контроллера, который собственно лежит
// в мувике
myMedia.displayFull();
}

и так далее, потом просто дописываешь свои методы.

Agro
05.06.2006, 12:11
Всё равно не очень понятно, как например будет выглядеть метод setBufferSize для медиа контролера? И ещё, может кто знает, где находятся все скрипты для компонентов, я уверен что они входят в пакет Флеш, но куда они попадают при инсталяции и как называется файл скрипта для медиа компонент, не знаю.

Reijii
05.06.2006, 12:24
что касается компонентов:

/**
Requires:
- FLVPlayback component on the Stage with an instance name of my_FLVPlybk
*/
import mx.video.*;
my_FLVPlybk.bufferTime = 8;
my_FLVPlybk.contentPath = "rtmp://host_name/somefolder/vid_name.flv";


но когда я проигрывал Flv, я пользовался NetStream. в хелпе нормлаьно о нем расписанно, там есть все что нужно для полноценного проигрывания.

а вообще по личному опыту скажу, мне пришлось работать со стандартными компонентами и не скажу что сильно они мне облегчили жизнь, местами даже очень и не облегчили. так как уж очень все там закопано-зарыто, и не всегда удобно, + их весь не соответствует их возможностям :)

KPaul
05.06.2006, 13:35
Я реализовывал динамическую буфферизацию, так мне пришлос расширять как минимум mx.controls.MediaDisplay и mx.controls.streamingmedia.RTMPPlayer(или FLVPlayer).
Расширять MediaDisplay по большому счету нужно только для того чтобы использовать расширенный RTMPPlayer(или FLVPlayer). У каждого из них есть приватный член _ns:NetStream, который и нужно контролировать (setBufferTime).
Для наглядности можно достать нет стрим положив на всю приватность, то есть обратиться следующим образом:
myMediaDisplay["_playerImpl"]["_ns"].setBufferTime(2)

По умолчанию буффер устанавливается на 5 сек.

Agro
05.06.2006, 16:23
Я реализовывал динамическую буфферизацию, так мне пришлос расширять как минимум mx.controls.MediaDisplay и mx.controls.streamingmedia.RTMPPlayer(или FLVPlayer).
Расширять MediaDisplay по большому счету нужно только для того чтобы использовать расширенный RTMPPlayer(или FLVPlayer). У каждого из них есть приватный член _ns:NetStream, который и нужно контролировать (setBufferTime).
Для наглядности можно достать нет стрим положив на всю приватность, то есть обратиться следующим образом:
myMediaDisplay["_playerImpl"]["_ns"].setBufferTime(2)

По умолчанию буффер устанавливается на 5 сек.
Спасибо. Это точно то, что мне нужно. Но есть несколько дополнительных вопросов:
1. Работает ли этот код во Флеш 7?
2. Что такое ["_playerImpl"]?
3. Откуда ты узнал о существовании _ns:NetStream?
4. Где находится сам скрипт для компонентов? Это я к тому, что если завтра мне понадобится расширить другой компонент, то мне нужно будет где-нибудь достать спецификацию для интересующего меня класса.

KPaul
05.06.2006, 18:36
1. Да. Компоненты v2 работают и под 6-ку(исключение r65). Только совмещать v1 и v2 нельзя.
2. Получаем доступ к реализованному плееру(player implemented),
то есть к RTMPPlayer или к FLVPLayer, в зависимости от типа медии (стрим или прогрессив). Инициализируется при вызове метода setMedia().
3. Реализацию плееров можно посмотреть в пакете mx.controls.streamingmedia.
4. Если он поставляется с пакетом mx, можно поискать его в этом пакете, примерно здесь:
C:\Documents and Settings\[userName]\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx