Получить общее время и время воспроизведения из компонента Flash Video?

Я загрузил видео в компонент FLVPlayback и ищу способ получить общее время и время, проигранное до сих пор, и вывести их в два текстовых поля, чтобы конечный результат выглядел примерно так: «00:12/00». :50".

Прямо сейчас я определяю видео с помощью инспектора компонентов, но в конечном итоге я надеюсь также определить этот бит с помощью actionscript. Мы будем очень благодарны за любые советы.


person Community    schedule 06.07.2009    source источник


Ответы (3)


Время можно найти здесь: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/video/FLVPlayback.html#playheadTime

А здесь: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/video/FLVPlayback.html#totalTime

Также есть событие, запускаемое через равные промежутки времени, поэтому вы можете легко обновить время: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/video/FLVPlayback.html#event:playheadUpdate

Изменить: обновлены ссылки

person Jacob Poul Richardt    schedule 07.07.2009
comment
ссылки не работают. не лучше ли было бы пометить ответ с реальными примерами кода как правильный? Они явно прослужат дольше! - person Sean Toru; 12.05.2016

Чтобы получить время:

flvPlayer.playheadTime;// gives you the current videp position 

Что касается форматирования:

public static function formatTime(time:Number, detailLevel:uint = 2):String {
  var intTime:uint = Math.floor(time);
  var hours:uint = Math.floor(intTime/ 3600);
  var minutes:uint = (intTime - (hours*3600))/60;
  var seconds:uint = intTime -  (hours*3600) - (minutes * 60);
  var hourString:String = detailLevel == HOURS ? hours + ":":"";
  var minuteString:String = detailLevel >= MINUTES ? ((detailLevel == HOURS && minutes = MINUTES)) ? "0":"") + seconds;
  return hourString + minuteString + secondString;
}
person mika    schedule 15.07.2013

Я знаю, что это старый вопрос, но я искал некоторое время и не нашел ответа.

Если вы используете компонент FLVPlayback, вы все равно можете использовать MetadataEvent для получения метаданных, встроенных в файл FLV/F4V. Я создал экземпляр FLVPlayback через AS3, прослушал событие MedataEvent.METADATA_RECEIVED, а затем получил доступ к свойству info, которое возвращает событие. В коде это выглядит примерно так:


package
{
import fl.video.FLVPlayback; // you will need to drag the component to the stage, then delete it.  This puts some stuff in the library and now you can access the class
import fl.video.MetadataEvent;
import flash.display.MovieClip;

public class flvTest extends MovieClip
{
private var inputURL:String = "./test.flv"; // change this to the location of your FLV/F4V
private var player:FLVPlayback;

public function flvTest():void
{
player = new FLVPlayback();
// set x,y,width,height values if you want
player.autoRewind = true; // I use this so when you press stop, it goes to the first frame
player.load( inputURL ); // you can use load() or source=
player.addEventListener( MetadataEvent.METADATA_RECEIVED, getMetaFromFLV );

addChild( player );
}

private var getMetaFromFLV( metadataEvent:MetadataEvent = null ):void
{
trace( "FLV Duration: " + metadataEvent.info.duration );
}

}
}

Очевидно, вам нужны некоторые элементы управления плеером и т. д., но ключом к этому ответу является часть MetadataEvent. Свойство info, возвращаемое событием, содержит ВСЕ метаданные, встроенные в видеофайл FLV/F4V, поэтому вы можете получить множество других значений.

(Многие другие поисковые запросы и сообщения объясняют только то, как получить метаданные из NetStream и т.п., которые используются при подключении к серверу Flash Media, тогда как здесь мы обращаемся к локальному файлу и просто хотим, чтобы данные, которые файл должен был быть встроен в Это).

Я надеюсь, что это помогает кому-то!

person Jawdy    schedule 11.11.2010