
了解完直播形式之后,接下来整体了解直播流程。
三、直播整体流程
直播整体流程大致可分为:
视频采集端:可以是电脑上的音视频输入设备、或手机端的、或麦克风,目前以移动端手机视频为主。

直播流视频服务端:一台Nginx服务器,采集视频录制端传输的视频流(H264/ACC编码),由服务器端进行解析编码,推送RTMP/HLS格式视频流至视频播放端。
视频播放端:可以是电脑上的播放器(QuickTime Player、VLC),手机端的native播放器,还有就是 H5的video标签等,目前还是以手机端的native播放器为主。

四、H5 录制视频
对于H5视频录制,可以使用强大的 webRTC (Web Real-TimeCommunication)是一个支持网页浏览器进行实时语音对话或视频对话的技术,缺点是只在 PC 的 Chrome上支持较好,移动端支持不太理想。
1. 使用 webRTC 录制视频基本流程
调用 window.navigator.webkitGetUserMedia() 获取用户的PC视频数据。
将获取到视频流数据转换成 window.webkitRTCPeerConnection (一种视频流数据格式)。
利用 WebScoket 将视频流数据传输到服务端。
注意:虽然Google一直在推WebRTC,目前已有不少成型的产品出现,但是大部分移动端的浏览器还不支持 webRTC(最新iOS10.0也不支持),所以真正的视频录制还是要靠客户端(iOS,Android)来实现,效果会好一些。
2. iOS原生应用调用录制视频流程
音视频的采集,利用AVCaptureSession和AVCaptureDevice可以采集到原始的音视频数据流。
对视频进行H264编码,对音频进行AAC编码,在iOS中分别有已经封装好的编码库(x264编码、faac编码、ffmpeg编码)来实现对音视频的编码。
对编码后的音、视频数据进行组装封包。
建立RTMP连接并上推到服务端。

五、搭建Nginx+Rtmp直播流服务
1. 安装nginx、nginx-rtmp-module
先clone nginx项目到本地:
brewtaphomebrew/nginx
执行安装nginx-rtmp-module
brew install nginx-full--with-rtmp-module
2. nginx.conf配置文件,配置RTMP、HLS
查找到nginx.conf配置文件(路径/usr/local/etc/nginx/nginx.conf),配置RTMP、HLS。
在http节点之前添加 rtmp 的配置内容:

在http中添加 hls 的配置


3. 重启nginx服务
重启nginx服务,浏览器中输入 :8080,是否出现欢迎界面确定nginx重启成功。
nginx -s reload
六、直播流转换格式、编码推流
当服务器端接收到采集视频录制端传输过来的视频流时,需要对其进行解析编码,推送RTMP/HLS格式视频流至视频播放端。通常使用的常见编码库方案,如x264编码、faac编码、ffmpeg编码等。
鉴于 FFmpeg 工具集合了多种音频、视频格式编码,我们可以优先选用FFmpeg进行转换格式、编码推流。
1.安装 FFmpeg 工具
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-67761-2.html
保卫家园