直接使用 nohup
多次调用 ffmpeg 进行多路推流。
多(大于两路)路同时推流:
方法一:
-nostdin
nohup ffmpeg -nostdin -re -i /root/smart_transport-deploy/video/flv/JC-02-output.flv -vcodec copy -acodec copy -f flv -y rtmp://your_ip/live/JC-02 >> /dev/null 2>&1 &
nohup ffmpeg -nostdin -re -i /root/smart_transport-deploy/video/flv/JC-03-output.flv -vcodec copy -acodec copy -f flv -y rtmp://your_ip/live/JC-03 >> /dev/null 2>&1 &
nohup ffmpeg -nostdin -re -i /root/smart_transport-deploy/video/flv/JC-06-02-output.flv -vcodec copy -acodec copy -f flv -y rtmp://your_ip/live/JC-06-02 >> /dev/null 2>&1 &
nohup ffmpeg -nostdin -re -i /root/smart_transport-deploy/video/flv/JC-20-01-output.flv -vcodec copy -acodec copy -f flv -y rtmp://your_ip/live/JC-20-01 >> /dev/null 2>&1 &
设置输入重定向 </dev/null
nohup ffmpeg -re -i /root/smart_transport-deploy/video/flv/JC-02-output.flv -vcodec copy -acodec copy -f flv -y rtmp://your_ip/live/JC-02 >> /dev/null 2>&1 </dev/null &
nohup ffmpeg -re -i /root/smart_transport-deploy/video/flv/JC-03-output.flv -vcodec copy -acodec copy -f flv -y rtmp://your_ip/live/JC-03 >> /dev/null 2>&1 </dev/null &
nohup ffmpeg -re -i /root/smart_transport-deploy/video/flv/JC-06-02-output.flv -vcodec copy -acodec copy -f flv -y rtmp://your_ip/live/JC-06-02 >> /dev/null 2>&1 </dev/null &
nohup ffmpeg -re -i /root/smart_transport-deploy/video/flv/JC-20-01-output.flv -vcodec copy -acodec copy -f flv -y rtmp://your_ip/live/JC-20-01 >> /dev/null 2>&1 </dev/null &
ffmpeg -re -stream_loop -1 -i /root/video/flv/JC-02-output.flv -re -stream_loop -1 -i /root/video/flv/JC-03-output.flv -map 0:v -map 0:a -c:v:0 copy -c:a:0 copy -f flv -y rtmp://your_ip/live/JC-02 -map 1:v -map 1:a -c:v:0 copy -c:a:0 copy -f flv -y rtmp://your_ip/live/JC-03
方法二:-map
ffmpeg -re -stream_loop -1 -i /root/video/flv/JC-02-output.flv -re -stream_loop -1 -i /root/video/flv/JC-03-output.flv -map 0:v -map 0:a -c:v:0 copy -c:a:0 copy -f flv -y rtmp://your_ip/live/JC-02 -map 1:v -map 1:a -c:v:0 copy -c:a:0 copy -f flv -y rtmp://your_ip/live/JC-03
被主进程调用推流脚本后台推流
可参考: https://blog.csdn.net/qq_37788558/article/details/108218037
ffmpeg -re -stream_loop -1 -i /root/video/flv/JC-02-output.flv -re -stream_loop -1 -i /root/video/flv/JC-03-output.flv -map 0:v -map 0:a -c:v:0 copy -c:a:0 copy -f flv -y rtmp://your_ip/live/JC-02 -map 1:v -map 1:a -c:v:0 copy -c:a:0 copy -f flv -y rtmp://your_ip/live/JC-03
杀死进程
ps -ef | grep ffmpeg | grep smart_transport-deploy | grep -v grep | awk -F ' ' '{print $2}' | xargs kill -9
引用自:ffmpeg多路同时推流
ffmpeg多路视频推流,分别接流(不合并)
首先说明下,我有两个usb摄像头,在项目里肯定是网络摄像头,其实差别不是很大,举一反三应该能解决问题
一路摄像头推出,多路接流
ffmpeg -f dshow -i video="HIK 1080P Camera" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://192.168.41.132/live/test0 -f flv rtmp://192.168.41.132/live/test1 -f flv rtmp://192.168.41.132/live/test2
多路摄像头推出,多路接流
ffmpeg -f dshow -i video="HIK 1080P Camera" -f dshow -i video="PC Camera" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://192.168.41.132/live/test0 -f flv rtmp://192.168.41.13
ffmpeg 推拉流 视频合成 多路合并…
原文链接: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 合并后的一路流