1、安装ffmpeg
sudo apt-get install ffmpeg
2、启动推流(包含声音录制)
ffmpeg -f alsa -ar 16000 -ac 1 -i hw:1 -f video4linux2 -s 640x480 -r 25 -i /dev/video0 -c:v h264_omx -f flv "rtmp地址"
如果没有麦克风,可以用以下命令:
ffmpeg -f video4linux2 -s 640x480 -r 25 -i /dev/video0 -c:v h264_omx -f flv "rtmp地址"
参数说明:
ffmpeg -f alsa -ar 16000 -ac 1 -i hw:1 -f video4linux2 -s 640x480 -r 25 -i /dev/video0 -c:v h264_omx -f flv "rtmp地址"
上述ffmpeg命令有三个部分组成,标注橙色部分为音频输入,红色为视频输入,绿色为串流输出
-f 指定输入或输出文件格式
alsa 高级Linux声音架构的简称
video4linux2 为linux中视频设备的内核驱动
-ar 16000 指定音频采样率为16kHz
-ac 1 指定音频声数
-i hw:1 指定输入来源
-s 640x480 指定帧大小(不指定的话就为原画尺寸)
-r 25 指定帧率fps
-c:v h264_omx 指定用h264_omx解码(树莓派的硬件解码,速度快得多)
常见告警:
Thread message queue blocking; consider raising the thread_queue_size option (current value: 8)
官方解释:此选项设置从文件或设备读取时排队数据包的最大数目。在低延迟/高速率的实时流中,如果没有及时读取数据包,则可能会丢弃它们;提高此值可以避免此情况。
因此,可以适当提高thread_queue_size的值,直到不再出现此告警。
-thread_queue_size 1024
最终,可以将推流命令这样写:
ffmpeg -f alsa -thread_queue_size 1024 -ar 16000 -ac 1 -i hw:1 -f video4linux2 -thread_queue_size 1024 -s 640x480 -r 25 -i /dev/video0 -c:v h264_omx -f flv "rtmp地址"
更多详细说明可参考ffmpeg官方文档:http://ffmpeg.org/ffmpeg.html
3、后台执行
(1)安装screen
sudo apt-get install screen
(2)新建终端
screen -S live
(3)在新的终端执行命令后
Ctrl+A+D
(4)重新进入终端
screen -r live
(5)删除某一个终端
screen -S 进程号 -X quit