Вопрос

Мне нужно создать что-то, что начнет передавать видео в кодировке H.264 на Flash player на середине файла (для поддержки перехода к точке видео, которая еще не была буферизована).

В настоящее время видеоролики представлены в формате контейнера FLV, но возможно перекодирование.Мне удалось переписать заголовок файла и информацию метаданных для заданного смещения в байтах.Это работает для старых видео, но не для файлов в кодировке H.264.Я подозреваю, что это связано с тем, что теги видео внутри файла также должны быть изменены, что невозможно (это потребовало бы слишком больших вычислительных мощностей).

Каков "правильный" способ сделать это?

Это было полезно?

Решение

Flash player может начать воспроизведение видео в формате H.264 только после загрузки MOOV atom.Существующие поставщики псевдопотоковой передачи просто предоставляют вам заголовок FLV - либо первые 13 байт файла, либо жестко закодированный, - а затем передают файл с заданным смещением.Если вы хотите создать псевдопоток H.264, вам нужно, чтобы он выводил заголовок FLV, затем атом MOOV, а затем обрабатывал остальную часть файла с заданным смещением.Если вы не используете контейнер FLV, вам не понадобится заголовок FLV, но вам все равно понадобится MOOV atom.

К сожалению, я не думаю, что вы сможете использовать MOOV atom из файла на диске;содержащаяся в нем информация не будет соответствовать фрагменту файла, который вы обслуживаете.Таким образом, вам пришлось бы проанализировать существующий atom и сгенерировать один из ваших собственных, который соответствовал бы обслуживаемой части файла.

Если в файле H.264 есть сложные структуры, псевдопоток может быть еще более сложным.Если синтаксический анализ файла невозможен, боюсь, вы не сможете выполнить псевдопоток вашего мультимедиа.

Другие советы

@yoavf - Я думаю, что OP заинтересован в серверных аспектах потоковой передачи по запросу h.264 внутри файлов FLV.Я думаю, ему было бы полезно повторно использовать существующих игроков.Или, может быть, это мои собственные потребности выходят наружу?<:S

По второй ссылке yoavf есть еще одна ссылка на Tinic Uro Что только что произошло с видео в Интернете? .Соответствующая цитата:

Можно ли будет поместить потоки H.264 в традиционную файловую структуру FLV?Так и будет, но мы настоятельно рекомендуем всем использовать новый стандартный формат файлов.Существуют функциональные ограничения структуры FLV при потоковой передаче H.264, которые мы не смогли бы преодолеть без изменения формата файла.Это одна из причин, по которой мы отходим от традиционной файловой структуры FLV.В частности, с потоками FLV сложно работать с заголовками последовательностей и их окончаниями.

Итак, похоже, можно либо повозиться с кодировкой ffmpeg (если именно так вы получаете свои FLV-файлы, как я), либо перейти на новый формат.Хммм....

две вещи, которые вы можете сделать:

1) используйте lighttpd и подключаемый модуль для потоковой передачи mp4, который сгенерирует необходимый контейнер для потоковой передачи "на лету"

2) создайте FLV с ключевым фреймом и используйте псевдопотоковый скрипт (например, XMOOV) для потоковой передачи вашего файла.

если вам нужны файлы mp4 / aac, вы можете просто поместить их в контейнер FLV, к большому огорчению adobe, но это работает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top