Прямая трансляция H264 / MP4 из ffmpeg не работает в браузере - PullRequest
0 голосов
/ 21 сентября 2018

Я не могу визуализировать поток H264 / MP4, сгенерированный ffmpeg в Chrome, IE, Edge.Он работает только в Firefox.

Моя среда тестирования - Windows 10, все обновления сделаны, все браузеры обновлены.

У меня есть исходный поток MJPEG, который мне нужно перекодировать в H264 /MP4 и показать его в браузере в виде элемента HTML5.Чтобы привести рабочий пример, я использую вот этот поток MJPEG: http://200.36.58.250/mjpg/video.mjpg?resolution=320x240. В моем реальном случае у меня есть вход MJPEG из разных источников, таких как IP-камеры.Я использую следующую командную строку:

ffmpeg.exe -use_wallclock_as_timestamps 1 -f mjpeg -i "http://200.36.58.250/mjpg/video.mjpg?resolution=320x240" -f mp4 -c: v libx264 -an -preset ultrafast -tune zerolatency -movflags frag_keyframe+ empty_moov + faststart -reset_timestamps 1 -vsync 1 -flags global_header -r 15 "tcp: //127.0.0.1: 5000? listen"

Если я пытаюсь визуализировать вывод в VLC, я использую эту ссылку:tcp: //127.0.0.1: 5000 и он работает. Затем я пытаюсь визуализировать поток в браузере, поэтому я помещаю это в HTML-документ:

<video autoplay controls>
<source src="http://127.0.0.1:5000" type="video/mp4">
</video>

Если я открою документ в Firefox, он работаетпросто отлично. Но он не работает при попытке открыть в Chrome, IE или Edge. Кажется, что браузер пытается подключиться к TCP-серверу, предоставляемому ffmpeg, но что-то происходит, потому что ffmpeg завершается через несколько секунд.

В консоли ffmpeg я могу видеть это:

av_interleaved_write_frame(): Unknown error
Error writing trailer of tcp://127.0.0.1:5000?listen: Error number -10053 occurred

Если я проверяю элемент видео в Chrome, то вижу эту ошибку:

Failed to load resource: net::ERR_INVALID_HTTP_RESPONSE

Насколько я знаю, все эти браузеры должныподдержка H264 кодированных потоков transported в контейнерах MP4.Если в элементе я заменю ссылку http://127.0.0.1:5000 на локальную ссылку на файл в кодировке mp4 / H264, она будет воспроизводиться в любом браузере без проблем.Кажется, проблема связана с потоковым вещанием.

Кто-нибудь знает, почему это происходит и как его можно решить?

Спасибо!

1 Ответ

0 голосов
/ 22 сентября 2018

Вы просто выводите на сокет TCP.Это не HTTP.Браузеры говорят по HTTP ... в этом случае вам нужно использовать HTTP-сервер.

...