Как сделать Flash псевдопотоковой? - PullRequest
7 голосов
/ 15 сентября 2008

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

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

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

Ответы [ 3 ]

3 голосов
/ 15 сентября 2008

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

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

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

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

2 голосов
/ 19 сентября 2008

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

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

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

0 голосов
/ 15 декабря 2008

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

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

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

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

...