我想同时从多达六个 IP 摄像机中捕获 h264 rtsp 流并将它们保存到单独的文件中。摄像机连接到连接到我的电脑的千兆交换机。输出视频必须同步以进行进一步处理:视频需要具有相同的持续时间、开始时间、停止时间和帧率。我正在尝试使用 ffmpeg 来完成这项任务。
显然,我的 IP 摄像机以可变帧速率提供输出。要同时以全高清格式录制多个流,我计划先复制流,然后再重新编码为恒定帧速率。这要求捕获的流携带每个帧的时间戳。
我第一次尝试记录流,比如 10 秒是:
ffmpeg -loglevel verbose -i rtsp://192.168.1.101 -i rtsp://192.168.1.102 \
-map 0:v -vcodec copy -an -t 10 -y out1.mp4 \
-map 1:v -vcodec copy -an -t 10 -y out2.mp4
Run Code Online (Sandbox Code Playgroud)
这应该将两个流的秒数保存到 out1.mp4 和 out2.mp4,复制视频,丢弃音频,如果文件存在则覆盖。然而,结果是两个长度不同的视频,在 5 到 7 秒之间,并且它们不同步。此外,视频每隔三秒左右就会冻结一次。(详细)日志输出如下:
ffmpeg version N-50911-g9efcfbe Copyright (c) 2000-2013 the FFmpeg developers
built on Mar 13 2013 21:26:48 with gcc 4.7.2 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-libass …
Run Code Online (Sandbox Code Playgroud)