推流和拉流是直播软件源码实现直播的重要步骤,今天我们分析一下如何通过Nginx实现直播软件源码的推拉流。
理论介绍
1、RMTP, Real Time Messaging Protocol 实时消息传输协议。
该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括Adobe Media Server/Ultrant Media Server/red5等。RTMP与HTTP一样,都属于TCP/IP四层模型的应用层。
复制代码
2、FFmpeg, 直播软件源码视频处理最常用的开源软件。
实现步骤
1、安装配置 FFmpeg
Mac 下装的比较简单,直接 homebrew 装即可:
brew install ffmpeg
2、安装 nginx
安装 rtmp module 采用 stack overflow 该方式可以成功安装
// 因为我之前有通过 homebrew 装过nginx,所以需要先 unlink
brew unlink nginx
// 了解了一下,类似npm 切换 registry
brew tap denji/nginx
// 执行安装
brew install nginx-full --with-rtmp-module
Nginx常用命令
- nginx -s reload 重新加载配置文件
- nginx -s reopen 再次打开日志文件
- nginx -s stop 停止服务器
- nginx -s quit 退出服务器
- nginx 启动Nginx
Nginx目录
- 安装位置 /usr/local/opt/nginx-full/bin/nginx
- 配置文件所在目录 /usr/local/etc/nginx/nginx.conf
- 服务器根目录 /usr/local/var/www
直播软件源码安装好 nginx 后,进行 rtmp 配置:
完整的配置文件可以从这里查看,可以备份下你当前的nginx.conf,然后用我提供的 nginx.conf 进行替换,然后执行 nginx -s reload,重新加载即可。
rtmp {
server {
listen 1935;
chunk_size 4096;
application video {
play /usr/local/var/www/video;
}
application live {
live on;
record off;
hls on;
# 这个路径是会有内容写到其中的
hls_path /usr/local/var/www/live/hls/;
hls_fragment 5s;
}
}
}
注意,其中的 /usr/local/var/www/video 目录如果不存在,可以手动创建一下。
直播软件源码播放相关的配置
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
# 注意,这里的路径需要和下面 rtmp 配置的路径一致,否则会报404
alias /usr/local/var/www/live/hls/;
expires -1;
add_header Cache-Control no-cache;
}
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
# 这里的目录一定要准确,否则会报404
root /usr/local/Cellar/rtmp-nginx-module/1.1.7.11-dev_3/share/rtmp-nginx-module/;
}
3、FFmpeg 推流,拉流
直播软件源码推流脚本
ffmpeg -re -i video.mp4 -vcodec libx264 -acodec aac -f flv rtmp://localhost/live/llccing
注意,执行上面命令的时候,有个video.mp4文件,所以需要在视频文件所在的目录运行该命令,或者指定绝对路径。视频资源在参考中已经提供,可以去下载。
直播软件源码拉流脚本
ffplay rtmp://localhost:1935/live/llccing
先推流,再拉流,即可实现视频播放。
4、OBS 推流, VLC 拉流
OBS推流设置,如下图:
VLC 拉流设置,如下图
如此就实现了通过 OBS 推流直播,通过 VLC 拉流观看直播。
5、成功展示
展示效果图如下
这样,我们就实现了直播软件源码的推拉流。
声明:本文由云豹科技转发自程序猿小新博客,如有侵权请联系作者删除