本文共 1474 字,大约阅读时间需要 4 分钟。
流媒体视频直播方案
在视频直播领域,有不同的商家提供各种的商业解决方案,包括软硬件设备,摄像机,编码器,流媒体服务器等。本文将介绍如何使用一系列免费工具,打造一套视频直播方案。
视频直播方案的组成,可以分为4部分:
1)前端采集编码设备:提供直播信号源的采集和编码压缩功能,并将信号推送到直播流媒体服务器上。
2)直播流媒体服务器:负责直播流的发布和转播分发功能。
3)WEB服务器:实现直播节目在终端上的展现。
4)终端设备:包括PC和移动终端。
本文的操作基于Mac系统,由于使用的是跨平台的工具,因此前端的数据采集和编码操作在其他平台上类似。
编码和协议
1)网络协议:主要有3种
a. RTSP(Real Time Streaming Protocol)是用来控制声音或影像的多媒体串流协议,由Real Networks和Netscape共同提出的。
b. RTMP(Real Time Messaging Protocol):实时消息传送协议是Adobe公司为Flash播放器和服务器之间音频、视频和数据传输开发的开放协议。
c. HLS(HTTP Live Streaming):是苹果公司实现的基于HTTP的流媒体传输协议。
2)视频编码: Mpeg4, H264等
3)音频编码: Mp3, AAC等
4)视频分辨率: 标清通常指的是640×480(或768×480);高清指的是1280×720;全高清指的是1920×1080;超高清3840×2160
前端数据采集和编码
编码器有很多选择,如商业版的envivio,免费版的ffmpeg。
我们使用ffmpeg(Mac系统上内置)从Mac笔记本摄像头捕捉视频,视频编码选择h264,音频编码选择mp3,且将生成的传输流ts发布到服务器。
在mac终端下,执行:./ffmpeg -f avfoundation -i "0" -vcodec libx264 -preset ultrafast -acodec libmp3lame -f flv rtmp://192.168.1.100:1935/myapp/stream
服务器地址:"rtmp://192.168.1.100:1935/myapp/stream",我们接下来进行搭建。
服务器
流媒体服务器也有诸多选择,如商业版的Wowza。
我们选择的是Nginx,它是优秀的免费Web服务器,通过扩展的nginx-rtmp模块,可以支持流媒体播放和管理。
基于它对RTMP协议的良好支持,因此本文以RTMP协议为例,配置服务器环境。
服务器搭建主要步骤:
(1)下载与安装
cd /usr/build
git clone git://github.com/arut/nginx-rtmp-module.git
wget tar xzf nginx-1.2.4.tar.gz
cd nginx-1.2.4
./configure --add-module=/usr/build/nginx-rtmp-module
make
make install
(2)配置实时直播:
要支持RTMP,需要在nginx.conf (PREFIX/conf/nginx.conf)中添加rtmp{} 部分,如下:
rtmp {
server { listen 1935; ping 30s; notify_method get; application myapp { live on; }}
}
转载地址:http://xarfk.baihongyu.com/