Я не могу визуализировать поток 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, она будет воспроизводиться в любом браузере без проблем.Кажется, проблема связана с потоковым вещанием.
Кто-нибудь знает, почему это происходит и как его можно решить?
Спасибо!