【音视频】RTMP流媒体服务器搭建、推流拉流
服务器:SRS(Simple RTMP Server,⽀持RTMP、HTTP-FLV,HLS)
 推流端:ffmpeg + OBS
 拉流端:ffplay +VLC + srs播放器
1 安装和测试srs流媒体服务器
1.1 安装srs流媒体服务器
- srs官⽹:https://github.com/ossrs/srs
 - 码云的源速度快:https://gitee.com/winlinvip/srs.oschina.git
 - github的源速度慢:https://github.com/ossrs/srs.git
 
第⼀步,获取SRS
git clone https://gitee.com/winlinvip/srs.oschina.git
cd srs.oschina
#使⽤当前最新的3.0版本
git checkout -b 3.0 remotes/origin/3.0release
cd trunk
 
第⼆步,编译SRS。
./configure
make -j$(nproc)
 
第三步,编写SRS配置⽂件
- 修改rtmp配置文件
 
vim conf/rtmp.conf
 
- 注释其中部分
 

- 启动SRS服务器
 
./objs/srs -c conf/rtmp.conf
 
- 监听rtmp服务器日志
 
tail -f ./objs/srs.log
 

2. rtmp推流
2.2 ffmpeg推流
- ffmpeg推流本地
flv视频 
ffmpeg -re -i music.flv -codec copy -f flv -y rtmp://192.168.217.128/live/livestream
 
- 使用ffplay拉流
 
ffplay rtmp://192.168.217.128/live/livestream -x 800
 

- vlc拉流
 


- ffmpeg推流摄像头+麦克风,这里使用dshow来推流
 - 先查看自己电脑支持的设备
 - 如果出现乱码,建议使用高版本的ffmpeg,我在ffmpeg4.2.2出现乱码,在ffmpeg7.1就没有这个情况
 
ffmpeg -list_devices true -f dshow -i dummy
 

- 推流摄像头+麦克风
 - 这里要做编码,所以指定编码器为libx264和aac,并且编码为flv格式
 
ffmpeg -re -f dshow -i video="Integrated Camera":audio="麦克风阵列 (Realtek(R) Audio)" -vcodec libx264 -acodec aac -f flv -y rtmp://192.168.217.128/live/livestream
 
- ffplay拉流
 
ffplay rtmp://192.168.217.128/live/livestream -x 800
 

- ffmpeg推流桌面 + 麦克风,这里使用gdigrab捕捉桌面
 - 稍微复杂一点,因为我的电脑是双显示屏,要捕捉第二个显示屏,所以设置了捕捉的范围
 - 使用h264_amf显卡编码,快一点
 - 不知道为什么这里的麦克风和录屏如果一起推,延迟巨大无比
 
 ffmpeg -re -f gdigrab -framerate 30 -video_size 1920x1080 -offset_x 0 -offset_y 0 -i desktop -f dshow -i audio="麦克风阵列 (Realtek(R) Audio)" -vcodec h264_amf -acodec aac -f flv -y rtmp://192.168.217.128/live/livestream
 
- vlc拉流,拉流稍微慢一点,要等一会
 

- obs推流桌面
 - 打开加号的显示器采集
 - 设置里面选择推流的服务器
 


- 使用ffplay拉流
 
ffplay rtmp://192.168.217.128/live/livestream
 

-  
ffmpeg推流桌面+麦克风
 -  
这里使用dshow的方法,不过得先下载:
screen-capture-recorder,下载地址:[下载](screen-capture-recorder-to-video-windows-free · GitHub) -  
下载完成后,输入命令就会发现多了一个设备
 
ffmpeg -list_devices true -f dshow -i dummy
 

- ffmpeg 使用dshow推流屏幕+麦克风
 - 这样推流就比gdigrab延迟低很多,相比正常多了
 - 使用硬件编码降低延迟
 
ffmpeg -re -f dshow -i video="screen-capture-recorder":audio="麦克风阵列 (Realtek(R) Audio)" -vcodec h264_amf -acodec aac -f flv -y rtmp://192.168.217.128/live/livestream
 
- 使用ffplay拉流
 
ffplay rtmp://192.168.217.128/live/livestream
 
更多资料:https://github.com/0voice
