Nginx直播系统rtmp&ffmpeg
1、主流直播系统三大协议简介
HLS
,是苹果公司实现的基于 HTTP 的流媒体传输协议,全称 HTTP Live Streaming,可支持流媒体的直播和点播,主要应用在 iOS 系统,为 iOS 设备(如 iPhone、iPad)提供音视频直播和点播方案;RTMP
,全称 Real Time Messaging Protocol,即实时消息传送协议。Adobe 公司为 Flash播放器和服务器之间音视频数据传输开发的私有协议。工作在TCP之上的明文协议,默认使用端口1935。协议中的基本数据单元成为消息(Message),传输的过程中消息会被拆分为更小的消息块(Chunk)单元。最后将分割后的消息块通过 TCP 协议传输,接收端再反解接收的消息块恢复成流媒体数据;HTTP-FLV
即,将流媒体数据封装成FLV格式,然后通过HTTP协议传输给客户端。HTTP-FLV依靠MIME的特性,根据协议中的Content-Type来选择相应的程序去处理相应的内容,使得流媒体可以通过HTTP传输。相较于RTMP协议,HTTP-FLV能够好的穿透防火墙,它是基于HTTP/80传输,有效避免被防火墙拦截。除此之外,它可以通过 HTTP 302 跳转灵活调度/负载均衡,支持使用 HTTPS 加密传输,也能够兼容支持 Android,iOS 的移动端;
图一:
2、基于Nginx构建直播系统
如图二所示,利用nginx rtmp模块+ffmpeg工具,实现rtmp及hls协议分流+水印的直播系统,通过ffmpeg将直播流hls推送至阿里云、腾讯云,用户可通过本地地址或云端地址观看直播,有无水印取决ffmpeg推流配置;
图二:
- 提示:
FFmpeg
是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的;
3、环境及相关软件介绍
3.1、实验环境
平台 | IP | 用途 | 所需软件 | ||
---|---|---|---|---|---|
CentOS release 6.9 64Bit | 172.21.0.5 | 拉端+水印处理+分流 | nginx-1.16.1.tar.gz | x265_3.3.tar.gz | |
nginx-rtmp-module-1.2.1.zip | |||||
ffmpeg-4.2.1.tar.bz2 | |||||
Windows 7 | 192.168.1.106 | 推端 | OBS+PotPlayer |
提示:安装ffmpeg的过程相对比较麻烦,如需要开启更多ffmpeg功能,则对应的依赖关系就复杂
4、安装及部署
提示:安装过程均基于oh my zsh的shell下进行
4.1、nginx及rtmp模块编译安装
1 | # root @ VM_0_5_centos in /soft [12:50:41] |
4.2、nginx配置及rtmp运行参数
附件:
4.2、ffmpeg编译安装
提示:安装ffmpeg前需解决相关依赖问题,并安装相关开发依赖组件,详见通用模板机安装手册;
4.2.1、dk-aac-2.0.1.tar.gz
1 | x fdk-aac-2.0.1.tar.gz |
4.2.2、lame-3.100.tar.gz
1 | x lame-3.100.tar.gz |
4.2.3、opus-1.3.1.tar.gz
1 | x opus-1.3.1.tar.gz |
4.2.3、libvpx.zip
1 | wget https://chromium.googlesource.com/webm/libvpx.git/+archive/7ec7a33a081aeeb53fed1a8d87e4cbd189152527.tar.gz |
4.4.4、llibvorbis-1.3.6.zip
1 | wget https://ftp.osuosl.org/pub/xiph/releases/vorbis/libvorbis-1.3.6.zip |
4.4.5、libogg-1.3.0.tar.gz
1 | wget http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz |
4.4.6、SDL-1.2.15.tar.gz
1 | wget http://www.libsdl.org/release/SDL-1.2.15.tar.gz |
4.4.8、nasm-2.13.03.tar.xz
1 | wget http://www.nasm.us/pub/nasm/releasebuilds/2.13.03/nasm-2.13.03.tar.xz |
4.4.7、x264
1 | git clone --depth 1 https://code.videolan.org/videolan/x264.gi |
4.4.8、x265_3.3.tar.gz
1 | tar xvf x265_3.3.tar.gz |
4.4.9、ffmpeg-4.2.1.tar.bz2
ffmpeg
下载地址:http://ffmpeg.org/download.htmlffmpeg
官方安装手册:https://trac.ffmpeg.org/wiki/CompilationGuide/Centos
1 | # root @ VM_0_5_centos in /soft/ffmpeg-4.2.1 [12:59:35] |
4、直播实战
- 手机直播地址:
http://49.232.152.80/hls/ar640.m3u8
(不依赖flash任意浏览器均可播放) - 手机直播地址(有水印):
http://49.232.152.80/hls/ar1280_wm.m3u8
(不依赖flash任意浏览器均可播放) - PC客户端直播地址:
http://49.232.152.80:1935/stream/ar1280
(需下载播放器potplayer)
4.1、OBS推流软件配置
4.2、PC端&手机端观看直播
- PC端使用PotPlayer播放rtmp流
- 手机端浏览器播放直播
有水印:
无水印:
4.3、扩展部分
提示:可构建h5页面,嵌套rtmp播放流,手机网页即可实现实时观看直播