Прямая трансляция 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
Пожалуйста, поделитесь всем исходным кодом, чтобы мы могли вам помочь