2017-07-18 125 views
0

任何帮助表示赞赏。FFMPEG H.264到JPEG实时视频

我们正在将H.264流转码为通过网络套接字发送到浏览器的Jpgs。我们希望这样做的原因是我们可以实时向浏览器提供实时视频。不需要浏览器不可知的方式插件。如果有更好的方法来做到这一点,那么了解更多信息将会非常棒。视频来源是H.264,但我们不能改变这一点。

当我们降低FPS时,我们发现摄像机视频输入有较大的滞后。例如在1 FPS时,我们看到浏览器中的视频滞后8秒。在15 FPS时,视频大约落后1秒。因此,即使在1 FPS时,它也会每秒更新一次,但帧落后8秒。

我们认为这是因为具有较低帧速率的FFMPEG必须等待较长的I帧,并且不会发送Jpeg到web套接字,直到它具有完整的一个。我们宁愿它发送一个Jpeg,而不必等到IFrame到达,我们宁愿看到一个逐渐被浏览器填满的局部图像。我们无法忍受浏览器中的大于0.8秒的延迟。当相机设置为发送MJPEG时,我们会看到0.250秒的滞后。使用H.264我们会看到1.25秒,我们需要将其降至0.8秒。所以我们真的希望微调H.264来削减一些时间。这就是为什么当我们降低FPS的第一种方法使情况变得更糟时,我们很惊讶,所以想知道还有什么需要与FPS一起进行微调以获得好的结果。

FFMPEG是否有任何选项可以告诉它在第一批数据到达时立即发送Jpegs?或者,我们应该看看其他调整途径?

这里是FFMPEG参数: ffmpeg的 -buffer_size 1024000 -r 15 -i的rtsp://10.140.150.92/02441987-0826-4dc2-b9bd-62efdc0dd951/02441987-0826-4dc2-b9bd-62efdc0dd951_vs1 ?标记= 02441987-0826-4dc2-b9bd-62efdc0dd951^LVEAMOKTD^100^40^26^1500482113^a97effd2a6f85c4a0b5e93953b27c8e1eb40ca77 &用户名= USER1 -f IMAGE2 -multiple_requests 1 -icy 0 -chunked_post 0 -q:v 31 -vsync 1 -r 15 -vf scale = 640:-1 http://127.0.0.1:58014/video/cameraTag_deviceId_22cameraUid_-1scale_640:-1cameraOrigin_requestedStreams_videostream1/frame-%03d.jpeg

非常感谢, 乔。

回答

1

我们正在将H.264流转码为通过网络套接字发送到浏览器的Jpgs。

为什么你会想要这样做?

当我们降低FPS时,我们发现摄像机视频输入有较大的滞后。

你降低FPS,等于是有要在帧之间较大的时间...

我们认为这是因为FFMPEG与较低的帧速率必须等待更长的时间对于I Frame,并且不会将Jpeg发送到Web套接字,直到它具有完整的一个。

没有必要等待I帧从视频中提取JPEG,但是谁知道您没有向我们展示您的FFmpeg命令,因此无法说出您为此使用的999个方法中的哪一个。

我们宁愿它发出了一个局部的Jpeg

据推测,你的意思是你宁愿有一个完整的JPEG当前帧,即使它不是从视频信号源的I帧,正确?

因为我们不能

您使用完全错误的技术,这里的一切,如果这是一个真正的问题在视频播放器容忍滞后。

我可能应该已经发布了所有这些作为评论,但是这里太多了。如果您可以解决您的问题并告诉我们您要做什么,我会删除此答案并发布实际答案。

+0

谢谢。我添加了一些额外的信息,希望能够将您需要的上下文添加到我的问题中。 –