PDA

Просмотр полной версии : Программное управление flv


Fox M. Lurde
03.03.2009, 19:09
Доброго времени суток!

Господа, подскажите пожалуйста. Импортирую FLV в проект (Flash CS4). Флэш подставляет свой компонент для управления видео. Каким образом можно отследить, что видео доиграло до конца? И кстати, можно ли изменить внешний вид панели управления видео на свой?

scarbo
03.03.2009, 19:30
написать свой видео-плеер,
что видео доиграло до конца
сравнивать time и duration

Fox M. Lurde
04.03.2009, 09:42
Допустим, сравнивать. Но как их получить? У меня в проекте импортрованный flv. Нет никаких instanceName и тому подобного (при импорте флэш не запрашивал, а после импорта непонятно, куда смотреть). Т.е. как в таком случае обратиться к flv? И в каком разделе справочника, если что, можно об этом почитать?

lexa2000lexa
04.03.2009, 11:50
код их хелпаКод в нижеследующем примере проигрывает файл myVideo.flv, хранимый в той же директории, что и SWF file.

var my_video:Video; // my_video есть объект Video на Сцене
var my_nc:NetConnection = new NetConnection();
my_nc.connect(null);
var my_ns:NetStream = new NetStream(my_nc);
my_video.attachVideo(my_ns);
my_ns.play("video1.flv");

Fox M. Lurde
04.03.2009, 13:30
Звук идет, картинки не видно. Это нормально?
my_ns.bytesTotal и my_ns.bytesLoaded возвращают 0.

Добавлено через 22 часа 40 минут
Решил проблему следующим образом:
1)импортировал видео инструментами flash
2)определил длину фильма в миллисекундах
3)поставил таймер отсчета. когда время (времяСтарта+протяженностьФильма) становятся равны либо меньше текущего времени, делаю переход на следующий кадр.

Но это - как-то криво и неудобно. Как это сделать более изящно и гибко?

jack_the_ripper
13.06.2009, 00:17
У класса Net Stream есть хэндлер onStatus(), c помощью которого можно отследить начало воспроизведения, остановку, полный или пустой буфер. Почитайте в хелпе, там должны быть примеры.

Seich
30.12.2009, 18:19
Звук идет, картинки не видно. Это нормально?
my_ns.bytesTotal и my_ns.bytesLoaded возвращают 0.

Добавлено через 22 часа 40 минут
Решил проблему следующим образом:
1)импортировал видео инструментами flash
2)определил длину фильма в миллисекундах
3)поставил таймер отсчета. когда время (времяСтарта+протяженностьФильма) становятся равны либо меньше текущего времени, делаю переход на следующий кадр.

Но это - как-то криво и неудобно. Как это сделать более изящно и гибко?

Видео нету, потому что ты на сцену не положил Видео объект. Его ищи в библиотеке (Library -> New Video...). Перетаскивай этот объект на сцену и дай ему instance name - my_video.
Теперь код:

var my_video:Video;// my_video is a Video object on the Stage
var my_nc:NetConnection = new NetConnection();
my_nc.connect(null);
var my_ns:NetStream = new NetStream(my_nc);
my_video.attachVideo(my_ns);
my_ns.play("intro.flv");
//
my_ns.onStatus = function(info:Object) {
switch (info.code) {
case "NetStream.Play.Stop" :
//тут видео доиграло -> делай чтото:
//my_ns.play("intro.flv"); //-проиграть ролик заново
//gotoAndPlay(2); //-или идти на фрейм X
break;
}
};
//
stop();