2009-12-10 14 views

ответ

4

Вы также нацелены на Flash Player 10 или более низкие версии? Поскольку более низкие версии Flash-плеера (9 и т. Д.) Не позволяют загружать SWF для чтения содержимого файла (кроме creatDate, creator (Тип создателя Macintosh), modifyDate, имя, размер в байтах и ​​тип), поэтому вы не сможете сделать это на этих игроках.

Если вы ориентируетесь исключительно пользователи FP10, вы можете load в FLV в ByteArray в вашем SWF и

  1. Играйте с помощью FLV плеер и прочитать свойство дюрации от игрока. Но я не мог найти FLV-плеер, который принимает ByteArray в качестве входного сигнала - и после прочтения this thread в SO, похоже, что это вообще невозможно.
  2. Разбирайте файл FLV и прочитайте свойство duration из его метаданных. FLV file specification открыт, но это будет нелегко.

Обновление комментария:
Выдержки из FLV файла спецификации:

onMetaData
FLV файл может содержать метаданные с маркером «onMetaData». Различные свойства потока доступны для запуска программы ActionScript через свойство NetStream.onMetaData. Доступные свойства различаются в зависимости от используемого программного обеспечения.
Общих свойства включают в себя:

  • duration: двойной с указанием общей продолжительности файла в секундах
  • width: двойной указывающая ширину видео в пикселях
  • height: двойное указании высота видео в пикселях
  • videodatarate: ДВОЙНОЙ, указывающий скорость передачи видео в килобитах в секунду
  • framerate: а DOUBLE с указанием количества кадров в секунду
  • videocodecid: а DOUBLE с указанием видеокодека ID, используемый в файле (смотрите раздел «Видео метки» на странице 8 для доступных значений CodecID)
  • audiosamplerate: двойные указывающей частота, при которой аудиопоток переигран
  • audiosamplesize: двойное указывающее разрешение одного аудио образца
  • stereo: логическое значение, указывающее, является ли стерео данные
  • audiocodecid : А DOUBLE указывающий аудиокодека ID, используемый в файле (см «Аудио метки» на странице 6 для доступных значений SoundFormat)
  • filesize: а DOUBLE с указанием общего размера файла в байтах

FLV-файл может содержать метаданные - он не говорит, что он будет содержать метаданные. В нем также говорится, что доступные свойства могут варьироваться в зависимости от программного обеспечения, используемого для создания FLV. Поэтому я думаю, что нет гарантии (согласно спецификациям), что будет присутствовать свойство duration. Тем не менее, duration является одним из основных свойств FLV, и было бы безопасно предположить, что любое разумное программное обеспечение будет включать его.

+0

Большое спасибо, что помогает. Мне интересно, могут ли быть случаи, когда метаданных для длины не существует. Вы сталкивались с этим, или я уверен, что данные всегда будут доступны? – Chin

+0

Еще раз большое спасибо за вашу помощь. Если вам когда-либо понадобится какая-либо временная работа flex или .net, сообщите мне. – Chin

1

Вы можете использовать Netstream.appendBytes для подачи файла FileReference.data (после вызова для просмотра, перед вызовом для загрузки) в NetStream, используемый для воспроизведения видео. Оттуда продолжительность может быть взята из метаданных, как описано в других разделах этой темы. Обратите внимание, что для этого подхода требуется, по крайней мере, Flash Player 10.