2017-08-15 161 views
0

试图通过FFmpeg正确抓取一台IP摄像机,海康威视品牌。FFmpeg抓取RTSP IP摄像机

这就是发生的事情与FFmpeg的:

 "ffmpeg", 
     "-rtsp_transport", "tcp", 
     "-stimeout", "3000000", 
     "-re", 
     "-i", stream, 
     "-vcodec", "copy", 
     "-acodec", "libfdk_aac", 
     "-f", "segment", 
     "-segment_list_type", "m3u8", 
     "-segment_list", name, 
     "-segment_list_size", "1", 
     "-segment_format", "mpegts", 
     "-segment_time", "5", 
     segment_filename, 

的结果总是与这些警告:

[段@ 0x560d0df9d1e0在输出流非单调DTS 0:0;前一个:33976,当前:7200;更改为33977.这可能会导致输出文件中的时间戳不正确。

我被这些警告卡住了,不知道如何在不重新编码流的情况下将它们拿走。事实上,这是破坏我的时间戳。

回答

0

我猜你的相机没有实现RTCP(发送者报告正确)。

RTP是关于媒体流的。 RTSP是设置连接的控制协议。 RTCP是发件人报告。

RTCP根据挂钟和RTP时间戳生成正确的时间戳。 不止一次我看到错误的RTCP实现丢失。

使用Wireshark验证您的相机是否为您提供正确的时间戳或在调试器中运行Live555。

+0

感谢您的回复。你是对的。 Hik相机不发送rtcp发件人请求。尽管我已经搜索了ffmpeg文档,并且有一个选项,如使用挂钟作为流。也许我没有以正确的方式应用它,但给我没有更好的时间戳 –

+0

没有发件人报告,你不会得到好的时间戳。 RTP时间戳必须具有随机起始值,并可能溢出并滚动。如果您没有通过发件人报告,您无法填写正确的时间戳。 –