Я использую класс FileReference для загрузки flvs на сервер. Можно ли проверить длину FLV не размер, прежде чем разрешить загрузку?получить длину FLV перед загрузкой на сервер
ответ
Вы также нацелены на Flash Player 10 или более низкие версии? Поскольку более низкие версии Flash-плеера (9 и т. Д.) Не позволяют загружать SWF для чтения содержимого файла (кроме creatDate, creator (Тип создателя Macintosh), modifyDate, имя, размер в байтах и тип), поэтому вы не сможете сделать это на этих игроках.
Если вы ориентируетесь исключительно пользователи FP10, вы можете load в FLV в ByteArray
в вашем SWF и
- Играйте с помощью FLV плеер и прочитать свойство дюрации от игрока. Но я не мог найти FLV-плеер, который принимает
ByteArray
в качестве входного сигнала - и после прочтения this thread в SO, похоже, что это вообще невозможно. - Разбирайте файл 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, и было бы безопасно предположить, что любое разумное программное обеспечение будет включать его.
Вы можете использовать Netstream.appendBytes для подачи файла FileReference.data (после вызова для просмотра, перед вызовом для загрузки) в NetStream, используемый для воспроизведения видео. Оттуда продолжительность может быть взята из метаданных, как описано в других разделах этой темы. Обратите внимание, что для этого подхода требуется, по крайней мере, Flash Player 10.
Большое спасибо, что помогает. Мне интересно, могут ли быть случаи, когда метаданных для длины не существует. Вы сталкивались с этим, или я уверен, что данные всегда будут доступны? – Chin
Еще раз большое спасибо за вашу помощь. Если вам когда-либо понадобится какая-либо временная работа flex или .net, сообщите мне. – Chin