ffmpeg推流及python管道控制ffmpeg推流

------------python算法处理后再进行推流-------------------------------

1、先搭建流媒体服务器

方式一:见Windows+nginx+rtmp+OBS文档,或用linux+nginx+rtmp

方式二:见SRS4.0.85流媒体服务器搭建

2、安装ffmpeg并添加到环境变量(以windows为例)

Download FFmpeg

将文件bin目录路径添加到环境变量中,在cmd/终端中输入ffmpeg,出现以下内容说明已添加好

(windows)

(linux)

3、python通过管道控制ffmpeg推流

经过无数次配置命令行验证,目前以下两种有效。目前经测试,使用ffmpeg推流命令复杂且视频画面不稳,容易出现各种各样问题,没有OBS好使 

import subprocess as sp
import cv2  
rtmpUrl = 'rtmp://192.168.3.39:1935/live/livestream'
    #下面这个可以通过srs服务器推webRTC流
    command = ['ffmpeg',
               '-y', '-an',
               '-f', 'rawvideo',
               '-vcodec', 'rawvideo',
               '-pix_fmt', 'bgr24',
               '-s', '1280x720',
               '-r', '25',
               '-i', '-',
               '-c:v', 'libx264',
               '-pix_fmt', 'yuv420p',
               '-preset', 'ultrafast',
               '-flvflags', 'no_duration_filesize',
               '-f', 'flv',
               rtmpUrl]
               
               #这个可通过nginx+rtmp服务器推流
command = ['ffmpeg',
           '-y',
           '-f', 'rawvideo',
           '-vcodec', 'rawvideo',
           '-pix_fmt', 'bgr24',
           '-s', "1280x720",
           '-i', '-',
           '-c:v', 'libx264',
           '-preset', 'faster',
           '-f', 'flv',
           rtmpUrl]
           
           # 下面这个可以通过srs推流webRTC
command = ['ffmpeg',
           '-re',
           '-i', rtmp_url,
           '-vcodec', 'copy',
           '-acodec', 'copy',
           '-f','flv',
           '-flvflags','no_duration_filesize',
            rtmpUrl]
            
            pipe = sp.Popen(command,stdin=sp.PIPE)
​
while (cap.isOpened()):
    ret, frame = cap.read()
    if ret:
        pipe.stdin.write(frame.tostring())
    else:
        break
​
cap.release()
pipe.terminate()

---------------ffmpeg推流本系统usb摄像头直接命令--------------

引用博客:地址

1、Linux

1、ls -ltrh /dev/video* #获取摄像头名称

Linux下用 FFMPEG 采集 usb摄像头视频 和 摄像头内置麦克风音频 到RTMP服务

ffmpeg -f video4linux2 -qscale 10 -r 12 -s 640x480 -i /dev/video0 -f alsa -i hw:1 -ab 16 -ar 22050 -ac 1 -f mp3 -f flv rtmp://127.0.0.1/rtmpsvr/rtmp1

./ffmpeg -f video4linux2 -s 640x480 -i /dev/video0 -f flv rtmp://127.0.0.1:1935/live/live

首先说一下推流,主要使用ffmpeg命令进行本地摄像头的推流,为了实现首屏秒开使用-g设置gop大小,同时使用-b降低网络负载,保证流畅度。

2、ffmpeg -r 30 -i /dev/video0 -vcodec h264 -max_delay 100 -f flv -g 5 -b 700000 rtmp://219.216.87.170/live/test1

2、windows

1、ffmpeg -list_devices true -f dshow -i dummy#获取摄像头名称

2、
ffmpeg -f dshow -i video="摄像头名称" -vcodec libx264 -acodec copy -preset:v ultrafast -tune:v zerolatency -f flv rtmp://116.xxx.xxx.xxx:1935/ros/ros_video


ffmpeg -r 30 -f vfwcap -i 0 -vcodec h264 -max_delay 100 -f flv -g 5 -b 700000 rtmp://219.216.87.170/live/test1



ffmpeg -r 30 -f dshow -i video="1.3M HD WebCam" -vcodec h264 -max_delay 100 -f flv -g 5 -b 700000 rtmp://219.216.87.170/live/tes

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值