我目前正在开发一个应用程序,它可以在浏览器中(在HTML5视频元素中)从不同来源(主要是IP摄像机)可视化图像。 UI将允许矩阵视图,因此通常会同时显示16个或更多相机。 从相机我得到MJPEG流或JPEG图像(我“转换”为MJPEG流)。所以,对于相机,我有一个MJPEG流,我将它设置为ffmpeg的输入。我指导的ffmpeg将其转换为MP4 & H.264,揭露输出作为TCP流,就像这样:使用ffmpeg进行自适应压缩
的ffmpeg -f MJPEG -i “http://localhost/video.mjpg” -f MP4 -vcodec libx264“TCP://127.0 .0.1:5001?听“
这工作得很好localhost,我得到的流显示在网页上,质量最好。
但是这必须在各种网络条件下工作。我使用了chrome throttling设置,并且注意到如果网络速度稍微低于所需速度(由我在ffmpeg中使用的当前压缩设置给出),则事情开始出错:从流开始被延迟(因此,不再是直播视频流),直到完成浏览器中“实时”图像的冻结。
我需要的是与当前网络速度相关的“自适应”方式来执行压缩。
我的问题是:
是FFmpeg的能处理这个问题,以适应网络条件 - 自动降低压缩质量当速度低;所以在浏览器中的图像将质量较低,但生活(这对我来说是最重要的)
如果不是,有没有办法解决这个问题?
有没有办法检测网络瓶颈? (然后重新启动的ffmpeg用较低的压缩参数;这不是一个动态自适应流,但是有总比没有好)
预先感谢您!
得到一个现场自适应流,你将不得不打包成HLS或DASH。用ffmpeg我知道你可以为VOD做,但不能实时多比特率。这将允许浏览器处理比特率适应。混乱的解决方案是让ffmpeg作业运行以产生不同的比特率,并且如果您看到HTML5视频元素缓冲区事件触发步骤降低到较低比特率源(不是非常流畅的体验) – Offbeatmammal