树莓派4B通过Nginx-RTMP实现推流和录音

一、目的

将树莓派通过USB音频采集卡实时采集到的音频进行推流和录音。

二、Nginx

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强。

三、RTMP

RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。

四、实现平台

硬件:树莓派4B
系统:2019-09-26-raspbian-buster-full.img

五、树莓派搭建Nginx-RTMP流媒体服务器步骤

1.先更新一下当前系统的软件列表

sudo apt-get update

2.安装依赖库

sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev

3.安装Nginx和RTMP

wget http://nginx.org/download/nginx-1.19.0.tar.gz

wget https://github.com/arut/nginx-rtmp-module/archive/master.zip

tar -zxvf nginx-1.19.0.tar.gz

unzip master.zip

cd nginx-1.19.0

./configure --with-http_ssl_module --with-debug --with-cc-opt="-Wimplicit-fallthrough=0" --add-module=../nginx-rtmp-module-maste

make

sudo make install

六、配置Nginx实现推流和录音

1.执行sudo nano /usr/local/nginx/conf/nginx.conf 修改nginx配置文件,添加以下内容

# /usr/local/nginx/conf/nginx.conf 添加
rtmp {
    server {
        listen 1935;
        chunk_size 4096;
        application capture_C {# 实现推流
            live on;  
            recorder C_record {# 实现录音
                record audio; 
                record_path /home/vhd/C_rec; # 存放录音文件的路径
                #record_unique on;
                record_interval 60s;   # 录音时长            
				record_suffix _C_%Y-%m-%d_%H-%M-%S.flv;  # 录音文件名称定义
		
            }	
        }
    }
}

2.启动Nginx-RTMP流媒体服务器

sudo /usr/local/nginx/sbin/nginx

3.推流和录音:通过ffmpeg将USB音频采集卡采集的实时音频推流至已搭建好的Nginx-RTMP流媒体服务器,推流的同时录音功能已启动

ffmpeg -f alsa -ac 2 -i hw:1,0 -ar 11025 -f flv rtmp://192.168.1.170/capture_C/E06

-ac表示声道
-i表示采集设备号,通过命令arecord -l查询
-ar表示采样率
-f表示输出格式
rtmp://192.168.1.170/capture_C/E06其中192.168.1.170是树莓派的IP地址,capture_C在nginx.conf文件中已定义,E06代表流的名称,可以随意改变

4.通过PotPlayer播放器打开链接``即可播放树莓派采集到的实时音频
树莓派4B通过Nginx-RTMP实现推流和录音_第1张图片
5.进入录音文件存放目录即可产看录音文件
在这里插入图片描述

你可能感兴趣的:(树莓派)