paunescuionica Ответов: 0

Прямая трансляция H264/MP4 из ffmpeg не работает в браузере


Я не могу визуализировать поток H264/MP4, генерируемый ffmpeg в Chrome, т. е. 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 -ф формат MJPEG -я "http://200.36.58.250/mjpg/video.mjpg?resolution=320x240" -Ф МР4 -с:V с поддержкой libx264 -Ан-предустановки сверхбыстрой настройки zerolatency -movflags frag_keyframe+empty_moov+служба FastStart -reset_timestamps 1 -свыше 1 -флаги global_header -р 15 "протокол TCP://127.0.0.1:5000?слушать"

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

<управление автозапуском видео>
<source src="http://127.0.0.1:5000" type="video/mp4">
</видео>

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

В консоли ffmpeg я вижу это:

av_interleaved_write_frame(): неизвестная ошибка
Ошибка записи трейлера tcp://127.0.0.1:5000?listen: произошла ошибка с номером -10053

Если я Проинспектировать элемент видео в Chrome, может увидеть эту ошибку:
Не удалось загрузить ресурс: net::ERR_INVALID_HTTP_RESPONSE

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

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

Спасибо!

Michael Haephrati

Пожалуйста, поделитесь всем исходным кодом, чтобы мы могли вам помочь

0 Ответов