Прямая трансляция через MP4

Я работаю над онлайн-сервисом телевидения. Одной из целей является воспроизведение видео без каких-либо дополнительных плагинов для браузера (кроме Flash).

Я решил использовать MP4, потому что он поддерживается большинством браузеров HTML5 и Flash (для резервирования). Видео транскодируются из ASF на сервере FFMpeg.

Однако я обнаружил, что MP4 нельзя транслировать в прямом эфире, поскольку он имеет атом moov для метаданных, который должен указывать длину. FFMpeg не может напрямую передавать mp4 на стандартный вывод, потому что он помещает moov в конец файла. (Оперативное транскодирование и потоковая передача MP4 работает в Android, но не работает в проигрывателе Flash Player с ошибкой NetStream.Play.FileStructureInvalid )

Конечно, MPEG-TS существует, но он не поддерживается HTML5<video>.

Я подумал о методе перекодировки потока в реальном времени в MP4, и при каждом новом HTTP-запросе сначала отправляйте moov, который задает очень длинное число для длины видео, а затем начинайте отправку оставшейся части Файл MP4.

Можно ли использовать MP4 для потоковой передачи таким образом?

После некоторых исследований и ответа av501 я понимаю, что размеры кадров должны быть известны, чтобы они могли работать.

Можно ли сегментировать файл mp4 на более мелкие части, чтобы его можно было транслировать?

Конечно, переключение на другой формат содержимого - это вариант, но единственный формат, совместимый как с Flash, так и с HTML5, - это mp4 / h264, поэтому, если мне придется поддерживать оба, мне придется дважды перекодировать.

Ответы на вопрос(4)

Ваш ответ на вопрос