PDA

Просмотр полной версии : Как отловить окончание проигрывания flv?


SONICTOM
30.08.2008, 02:01
Есть следующее условие задачи: делаю презентацию на CD, в презентации проигрывается fvl, который лежит на этом же диске(тоесть длинна его вопроизведения мне известна).
Задача: если flv доигрывает до конца, то происходит какое-то действие(ну например презентация закрыватеся).
Если во время проигрывания flv, проигрывание было приостановлено или была перемотка, то презентация закрываться не будет.

Тоесть как выяснить достиг ли flv своего конца или нет.

Надеюсь изложил мысль хоть путано, но понятно :)
Заранее, большое спасибо за ответ!

BBOY Ильич
30.08.2008, 02:07
NetStream.time

SONICTOM
30.08.2008, 02:33
NetStream.time

Спасибо! Но я только начинаю осваивать AS сложнее чем goto и т.д. так как 8 лет занимаюсь только анимацией :(
Этот оператор позволяет выяснить длину flv и если она равна 100% то через fscomand вополнить quit? Тоесть интересует как именно использовать функцию NetStream.time.

Спасибо!

BBOY Ильич
30.08.2008, 02:43
NetStream.time показывает сколько времени играется видео.
Сравнивайте постоянно эту величину с общей длиной видео и когда они сравняются решайте, закрывать или нет.

SONICTOM
30.08.2008, 14:05
NetStream.time показывает сколько времени играется видео.
Сравнивайте постоянно эту величину с общей длиной видео и когда они сравняются решайте, закрывать или нет.

К сожалению я не совсем понял как использовать NetStream.time.
Не могли бы Вы написать как выглядит скрипт для отслеживания через trace сколько видео уже проиграло. А то я не пойму, где указывать имя flv и т.д. Нелпы по CS3 вогнали меня в ступор, так как начинающий программер там ногу сломает :(

Спасибо!

BBOY Ильич
30.08.2008, 14:31
var connection_nc:NetConnection = new NetConnection();
connection_nc.connect(null);
var stream_ns:NetStream = new NetStream(connection_nc);
my_video.attachVideo(stream_ns);
stream_ns.play("1.flv");
function onEnterFrame(){
trace(stream_ns.time);
}

SONICTOM
30.08.2008, 16:52
var connection_nc:NetConnection = new NetConnection();
connection_nc.connect(null);
var stream_ns:NetStream = new NetStream(connection_nc);
my_video.attachVideo(stream_ns);
stream_ns.play("1.flv");
function onEnterFrame(){
trace(stream_ns.time);
}

Несказанно благодарен! Все работает!

SONICTOM
30.08.2008, 18:45
Извиняюсь. Все работает, но одно "но". Звук двоится. Тоесть звук воспроизводится повторно с небольшим отставанием.

darksranger
30.08.2008, 18:51
вынесите звук в одельный поток
f1 attachAudio

PS пример который любезно предоставил BBOY Ильич, взят из f1
совет!
прежде чем создавать тему, пользуйтесь справкой(f1), много вопросов для себя решите, там

SONICTOM
30.08.2008, 19:03
вынесите звук в одельный поток
f1 attachAudio

PS пример который любезно предоставил BBOY Ильич, взят из f1
совет!
прежде чем создавать тему, пользуйтесь справкой(f1), много вопросов для себя решите, там
Я уже писал, что мне мало чем помогает справка f1, так как я только перехожу после 8 лет анимации к программированию и большая часть того, с чем используется искомая мной функция мне не ясны. Если бы у меня было время выучить все с нуля, то так и сделал бы, но к сожалению подвернулся срочный заказ на презентацию. Все просто, кроме ситуации с видео. Поэтому и решил обратиться за помошью к знатокам.

Вот и сейчас посмотрел в хелпах как применять attachAudio и ничего не понял.

Не будете ли вы так любезны внести исправления в пример, чтобы звук не двоился?

darksranger
30.08.2008, 19:19
я не знаю, почему у вас он двоится, я просто предложил, вариант решения проблемы

var connection_nc:NetConnection = new NetConnection();
connection_nc.connect(null);
this.createEmptyMovieClip("flv_mc", this.getNextHighestDepth());
var stream_ns:NetStream = new NetStream(connection_nc);
my_video.attachVideo(stream_ns);
flv_mc.attachAudio(stream_ns);
var audio_sound = new Sound(flv_mc);
stream_ns.play("1.flv");
function onEnterFrame(){
trace(stream_ns.time);
}

f1... .
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("yourVideo.flv");
this.createEmptyMovieClip("flv_mc", this.getNextHighestDepth());
flv_mc.attachAudio(my_ns);
var audio_sound:Sound = new Sound(flv_mc);

SONICTOM
30.08.2008, 19:47
Как при использовании первого, так и при использовании второго скрипта получается такая фигня со звуком:
http://tomcat.org.ua/aaa/test.html

darksranger
30.08.2008, 19:59
выложите исходник

SONICTOM
30.08.2008, 20:21
выложите исходник

Вот исходник: http://tomcat.org.ua/aaa/test.fla

Примерно понячл в чем была моя ошибка. Помимо того, что сам скрипт воспроизводил flv, так еще в компонент инспекторе я отметил этот flv.
Когда убрал в компонент инспекторе путь к flv, то звук раьотал нормально но не было изображения. Тогда снова указал путь в инспекторе и поставил в нем громкость на 0. Теперь и видео работает и звук не двоится, но это видимо компромис, а не грамматное решение.

Спасибо, что выручаете!

darksranger
30.08.2008, 20:29
сохраните исходник в 8 flash
PS не все тут любители cs3 :)
не используйте компоненты ...

BBOY Ильич
30.08.2008, 20:35
Тут нужно не FLVPlayback использовать, а Video...

SONICTOM
31.08.2008, 03:05
Тут нужно не FLVPlayback использовать, а Video...

Спасибо! Теперь порядок.
Подскажете, пожалуйста, как добавить на сцену компонент Video? В списке компонентов я его не нашел. Возможно он есть в 8 флеше.

SONICTOM
31.08.2008, 03:07
сохраните исходник в 8 flash
PS не все тут любители cs3 :)
не используйте компоненты ...

Да, я замечал, что не все спешат переходить на CS3. Это из-за нелюбви к AS3 или просто привычка к 8 версии? :)

BBOY Ильич
31.08.2008, 04:16
На панели лайбрари справа наверху стрелочка)

darksranger
31.08.2008, 07:40
SONICTOM
это из за того что cs 3, в плане оболочки, очень не приятный .....
если адоби сделает cs4 в стиле 8ки,лично перейду ....

PS в либрари, правая кнопка ( new video )

SONICTOM
31.08.2008, 15:18
Очередная проблема :( У меня после окончания видео идет небольшая анимация и после закрытие презентации.
Так у меня в условии
if (stream_ns.time>=34) {
gotoAndPlay("sa1");
}
По завершении видео меня, как и нужно, перекидывает на кадр сцены sa1 (с началом анимации лежащей на сцене) но анимация застывает на кадре sa1 и не воспроизводится :( Так же если поставить в условии сверку с stream_ns.time на на 34, а допустим на 20, тоесть перейти к анимации раньше, чем закончится видео, то звук видео продолжает ирать дальше(что логично :) ). Как в этом случае можно выгрузить видеофайл или остановить воспроизведение my_video?

Спасибо, что выручаете!

Wave
31.08.2008, 15:35
камешек в огород любителей почитать хелпы - код ваш крив.

правильно будет отловить onPlayStatus и там поделать чего угодно.

из того же хелпа:

[onPlayStatus] Dispatched when a NetStream object has completely played a stream. This handler returns information objects that provide information in addition to what's returned by the netStatus event. You can use this handler to trigger actions in your code when a NetStream object has switched from one stream to another stream in a playlist (as indicated by the information object NetStream.Play.Switch) or when a NetStream object has played to the end (as indicated by the information object NetStream.Play.Complete).

darksranger
31.08.2008, 16:10
ну если не из хелпов то откуда брать инфу ? :)
а поделу чтобы "выгрузить"
stream_ns.close()

Wave
31.08.2008, 16:59
не в том проблема, откуда инфу брать, друг, опомнись - мы в интернете :bye:
проблема в том, чтобы инфу брать именно ту, которая тебе здесь и сейчас реально необходима

SONICTOM
31.08.2008, 17:07
Всем спасибо, уже разобрался!
Хорошо, когда есть жена свободно владеющая английским и любящая читать доки :)

sltrdn
08.02.2012, 23:52
Я извиняюсь за откапывание такой старой темы. Но возник вопрос именно в контексте этой темы.

Почему-то player_ns.onStatus срабатывает, а player_ns.onPlayStatus не работает. И даже даже в выпадающем меню позволяющем выбрать свойства или функцию отсутствует onPlayStatus. Хотя на сайте адоба все есть. Может надо импорт какой сделать?

И коды не все присутствуют. Например когда на паузу ставишь видео onStatus не отрабатывает с этим кодом NetStream.Pause.Notify. При прокрутке NetStream.Seek.Notify приходит.

Вот здесь читал

http://livedocs.adobe.com/flashmediaserver/3.0/hpdocs/help.html?content=00000181.html

Все расписано нормально, но в реале не работает. Просто нет такого хэндлера и все. Как так может быть. Не пойму.