将多个 RTSP 流录制到单个文件中



我需要将 4 个 RTSP 流记录到一个文件中。

流必须按以下方式放入视频中:

---------- ---------- 
|          |          |
| STREAM 1 | STREAM 2 |
|          |          |
|----------|----------|
|          |          |
| STREAM 3 | STREAM 4 |
|          |          |
---------- ----------

我需要以大约 ~1 秒的精度同步这些实时流。这很有挑战性,因为流具有可变帧速率 (FPS(。

我已经尝试过ffmpeg但流不同步。 这是代码:

ffmpeg 
-i "rtsp://IP-ADDRESS/cam/realmonitor?channel=1&subtype=00" 
-i "rtsp://IP-ADDRESS/live?real_stream" 
-i "rtsp://IP-ADDRESS/live?real_stream" 
-i "rtsp://IP-ADDRESS/live?real_stream" 
-filter_complex " 
nullsrc=size=1920x1080 [base]; 
[0:v] scale=960x540 [video0]; 
[1:v] scale=960x540 [video1]; 
[2:v] scale=960x540 [video2]; 
[3:v] scale=960x540 [video3]; 
[base][video0] overlay=shortest=1:x=0:y=0 [tmp1]; 
[tmp1][video1] overlay=shortest=0:x=960:y=0 [tmp2]; 
[tmp2][video2] overlay=shortest=0:x=0:y=540 [tmp3]; 
[tmp3][video3] overlay=shortest=0:x=960:y=540 [v]; 
[0:a]amix=inputs=1[a]" 
-map "[v]" -map "[a]" -c:v h264 videos/test-combine-cams.mp4

有没有办法在ffmpeg或使用其他实用程序(如:vlc,openRTSP,OpenCV(中组合和同步流?

您是否尝试过gstreamer,它适用于我的rtsp流。

gst-launch-1.0 -e rtspsrc location=rtsp_url1 ! rtph264depay ! h264parse ! decodebin ! videoconvert ! m.sink_0 
rtspsrc location=rtsp_url2 ! rtph264depay ! h264parse ! decodebin ! videoconvert ! m.sink_1 
rtspsrc location=rtsp_url3 ! rtph264depay ! h264parse ! decodebin ! videoconvert ! m.sink_2 
rtspsrc location=rtsp_url4 ! rtph264depay ! h264parse ! decodebin ! videoconvert ! m.sink_3 
videomixer name=m sink_1::xpos=1280 sink_2::ypos=720 sink_3::xpos=1280 sink_3::ypos=720 ! x264enc ! mp4mux ! filesink location=./out.mp4 sync=true

当然,您需要添加 rtsp 网址并根据您的视频大小调整视频混合器 xpos/ypos 属性(我的是 720p(。

在混合之前,您可能希望一次只运行一个依赖项,以确保正确安装了所有依赖项

gst-launch-1.0 rtspsrc location=rtsp_url1 ! rtph264depay ! h264parse ! decodebin ! x264enc ! mp4mux ! filesink location=./out.mp4 sync=true

我还没有添加音频。

相关内容

  • 没有找到相关文章

最新更新