gstreamer - 使用 GStreamer 同步两个 RTSP/RTP H264 视频流捕获

标签 gstreamer h.264 rtsp

我有两个 AXIS IP 摄像机通过 RTSP/RTP 流式传输 H264 流。两台摄像机都设置为与同一个 NTP 服务器同步,所以我假设两台摄像机将具有相同的精确时钟(可能会以毫秒为单位的微小差异)。

在我的应用程序中,两个摄像头都指向相同的 View ,并且需要同时处理两个摄像头图像。因此,我想使用 GStreamer 同步图像捕获。

我曾尝试在不同的 cmd 提示下分别调用两个管道,但视频相隔 2-3 秒 enter image description here .

  • gst-launch rtspsrc location=rtsp://192.168.16.136:554/live ! rtph264depay ! h264解析! splitmuxsink max-size-time=100000000 location=cam1_video_%d.mp4
  • gst-launch rtspsrc location=rtsp://192.168.16.186:554/live ! rtph264depay ! h264解析! splitmuxsink max-size-time=100000000 location=cam2_video_%d.mp4

  • 有人可以建议使用 gstreamer 管道来同步两个 H264 流并将它们录制到单独的视频文件中吗?

    谢谢!
    ARM

    最佳答案

    我可以使用 gst-launch 启动管道,如下所示。与启动两个管道相比,它在捕获的帧同步方面表现出良好的改进。大多数情况下,它们相差 0-500 毫秒。尽管如此,我仍然希望以小于 150 毫秒的精度同步它们。

    rtspsrc location=rtsp://192.168.16.136:554/axis-media/media.amp?videocodec=h264 \
        ! rtph264depay ! h264parse \
        ! splitmuxsink max-size-time=10000000000 location=axis/video_136_%d.mp4   \
    rtspsrc location=rtsp://192.168.16.186:554/axis-media/media.amp?videocodec=h264 \
        ! rtph264depay ! h264parse \
        ! splitmuxsink max-size-time=10000000000 location=axis/video_186_%d.mp4
    
    感谢有人可以指出其他想法!
    ~ ARM

    关于gstreamer - 使用 GStreamer 同步两个 RTSP/RTP H264 视频流捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37555171/

    相关文章:

    python - 如何修复 `WARNING: erroneous pipeline: no element "疯狂“`

    FFmpeg 流式传输低 CRF 导致质量低下

    node.js - FFmpeg使用nodejs流式传输RTSP输入并同时保存到文件

    FFmpeg NaCl 模块 avformat_open_input(在 rtsp 流上)返回 -5 : I/O error

    ffmpeg - 将麦克风从客户端浏览器流式传输到远程服务器,并将音频实时传递到 ffmpeg 以与第二个视频源结合

    Gstreamer opusenc 编码器产生失真/断断续续的音频

    video-streaming - Gstreamer 管道 - 在单独的进程中生产和使用输出

    ffmpeg - 在编码时强制自定义 H.264 帧内(关键帧)?

    h.264 - Media Foundation h264 编码器在动态场景中质量不佳

    audio-streaming - 将 Wav 音频文件作为 RTP 数据包发送