ffmpeg 多路推流

直接使用 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多路视频推流,分别接流(不合并)

原文链接: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 合并后的一路流

发表评论