我无法在Chrome,IE,Edge中可视化ffmpeg生成的H264 / MP4流。它仅在Firefox中可用。
我的测试环境是Windows 10,所有更新都已完成,所有浏览器都是最新的。
我有一个源MJPEG流,我需要将其转码为H264 / MP4并在浏览器中以HTML5元素显示。 为了提供可行的示例,我在这里使用以下MJPEG流:http://200.36.58.250/mjpg/video.mjpg?resolution=320x240。在我的真实情况下,我有来自IP摄像机等不同来源的MJPEG输入。 我使用以下命令行:
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-预设超快速-tune零延迟-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中打开时,它不起作用。似乎浏览器尝试连接到ffmpeg公开的TCP服务器,但由于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
据我所知,所有这些浏览器均应支持在MP4容器中传输的H264编码流。如果在元素中,将链接http://127.0.0.1:5000替换为指向mp4 / H264编码文件的本地链接,则在每个浏览器中都可以正常播放。该问题似乎与实时流式传输有关。
有人知道为什么会发生这种情况以及如何解决吗?
谢谢!
答案 0 :(得分:0)
您只是输出到TCP套接字。那不是HTTP。浏览器会说HTTP ...在这种情况下,您需要使用HTTP服务器。