【问题标题】:FFmpeg grabbing RTSP IP CameraFFmpeg 抓取 RTSP IP 摄像机
【发布时间】:2018-01-23 07:09:14
【问题描述】:

试图通过FFmpeg正确抓取一个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,

结果总是带有这些警告:

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

我被这些警告所困扰,不知道如何在不重新编码流的情况下摆脱它们。确实,这破坏了我的时间戳。

【问题讨论】:

    标签: video ffmpeg h.264 rtsp


    【解决方案1】:

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

    RTP 是关于媒体流的。 RTSP 是建立连接的控制协议。 RTCP 是发送方报告。

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

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

    【讨论】:

    • 感谢您的回复。是的,你是对的。 Hik 相机不发送 rtcp 发送方请求。虽然我搜索了 ffmpeg 文档,但有一个选项,比如使用挂钟作为流。也许我没有以正确的方式应用它,但没有给我更好的时间戳的结果
    • 如果没有发件人报告,您将无法获得良好的时间戳。 RTP 时间戳必须具有随机起始值,并且可能会溢出和滚动。如果您没有通过发件人报告获取时间戳,您将无法编造正确的时间戳。
    • @MarkusSchumann 那么这些海康威视摄像机没有解决方案吗?我也面临同样的问题
    • @astralmaster - 您可以联系制造商或进行某种穷人的同步:忽略虚假时间戳并用到达时间重新标记您的样品。如果您真的关心 A/V 同步,这不是一个选择。
    猜你喜欢
    • 2011-07-28
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    相关资源
    最近更新 更多