ffmpeg推拉流 视频合成 多路合并…
推拉流指令
ffmpeg -re -rtsp_transport tcp -i "rtsp://admin:**********/h264/ch1/main/av_stream" -f flv -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 "rtmp://localhost:1935/live/test4"
ffmpeg视频合并
ffmpeg -i E:\\ffmpeg_server\\ffmpeg-win64-static\\bin\\one1.mp4 -i E:\\ffmpeg_server\\ffmpeg-win64-static\\bin\\one2.mp4 -i E:\\ffmpeg_server\\ffmpeg-win64-static\\bin\\one3.mp4 -i E:\\ffmpeg_server\\ffmpeg-win64-static\\bin\\one4.mp4 -filter_complex "[0:v]pad=iw*2:ih*2[a];[a][1:v]overlay=w[b];[b][2:v]overlay=0:h[c];[c][3:v]overlay=w:h" E:\\ffmpeg_server\\ffmpeg-win64-static\\bin\\out.mp4
多路合并推流
ffmpeg -re -rtsp_transport tcp -i "rtsp://admin:6512DengLiyuan@192.168.1.64:554/h264/ch1/main/av_stream" -re -rtsp_transport tcp -i "rtsp://admin:6512DengLiyuan@192.168.1.64:554/h264/ch1/main/av_stream" -re -rtsp_transport tcp -i "rtsp://admin:6512DengLiyuan@192.168.1.64:554/h264/ch1/main/av_stream" -re -rtsp_transport tcp -i "rtsp://admin:6512DengLiyuan@192.168.1.64:554/h264/ch1/main/av_stream" -filter_complex "[0:v]pad=iw*2:ih*2[a];[a][1:v]overlay=w[b];[b][2:v]overlay=0:h[c];[c][3:v]overlay=w:h" -f flv -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 "rtmp://localhost:1935/live/test"
测试(失败)
ffmpeg -re -i "rtmp://localhost:1935/live/test" -re -i "rtmp://localhost:1935/live/test2" -re -i "rtmp://localhost:1935/live/test3" -re -i "rtmp://localhost:1935/live/test4" -filter_complex "[0:v]pad=iw*2:ih*2[a];[a][1:v]overlay=w[b];[b][2:v]overlay=0:h[c];[c][3:v]overlay=w:h" -f flv -vcodec libx264 "rtmp://localhost:1935/live/test5"
//ffmpeg合并两路rtmp流并推送
ffmpeg -i “rtmp://ip:port/firststream” -i “rtmp://ip:port/secondstream” -filter_complex overlay=20:16 -f flv “rtmp://ip:port/addstream”
//overlay=x:y
//这里x和y表示距离左上角的坐标偏移
ffmpeg实现四路rtmp流的合并
ffmpeg
-i "rtmp://localhost:1935/live/test1"
-i "rtmp://localhost:1935/live/test2"
-i "rtmp://localhost:1935/live/test3"
-i "rtmp://localhost:1935/live/test4"
-filter_complex
"nullsrc=size=640x480 [base];[0:v] setpts=PTS-STARTPTS, scale=320x240 [upperleft]; [1:v] setpts=PTS-STARTPTS, scale=320x240 [upperright];[2:v] setpts=PTS-STARTPTS, scale=320x240 [lowerleft];[3:v] setpts=PTS-STARTPTS, scale=320x240 [lowerright];[base][upperleft] overlay=shortest=1 [tmp1];[tmp1][upperright] overlay=shortest=1:x=320 [tmp2]; [tmp2][lowerleft] overlay=shortest=1:y=240 [tmp3]; [tmp3][lowerright] overlay=shortest=1:x=320:y=240" -f flv "rtmp://localhost:1935/live/test"
整体的逻辑是 : ffmpeg -i 多路流 -filter_complex 合并参数 -f flv 合并后的一路流