流媒体视频直播方案

流媒体视频直播方案

 
背景  

在视频直播领域,有不同的商家提供各种的商业解决方案,包括软硬件设备,摄像机,编码器,流媒体服务器等。本文讲解如何使用一系列免费工具,打造一套视频直播方案。  

视频直播方案的组成,可以分为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):是苹果公司(Apple Inc.)实现的基于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模块,可以支持流媒体播放和管理。
nginx-rtmp模块特点是:
RTMP/HLS/MPEG-DASH live streaming
RTMP Video on demand FLV/MP4, playing from local filesystem or HTTP
Stream relay support for distributed streaming: push & pull models
Recording streams in multiple FLVs
H264/AAC support
Online transcoding with FFmpeg
HTTP callbacks (publish/play/record/update etc)
Running external programs on certain events (exec)
HTTP control module for recording audio/video and dropping clients
Advanced buffering techniques to keep memory allocations at a minimum level for faster streaming and low memory footprint
Proved to work with Wirecast, FMS, Wowza, JWPlayer, FlowPlayer, StrobeMediaPlayback, ffmpeg, avconv, rtmpdump, flvstreamer and many more
Statistics in XML/XSL in machine- & human- readable form
Linux/FreeBSD/MacOS/Windows
基于它对RTMP协议的良好支持,因此本文以RTMP协议为例,配置服务器环境。
服务器搭建主要步骤: 
     
(1)下载与安装 
cd /usr/build 
git clone git://github.com/arut/nginx-rtmp-module.git 
wget http://nginx.org/download/nginx-1.2.4.tar.gz 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; 
         }
     }
}

客户端
使用VLC来访问视频服务器,观看视频。 VLC也是跨平台的软件,在Mac, windows终端都有不同版本。 
选择 File/Open Network, 播放地址: rtmp://192.168.1.100:1935/myapp/stream.
即可观看实时视频。
参考: 
       Nginx官网: https://github.com/arut/nginx-rtmp-module/wiki/Getting-started-with-nginx-rtmp 


你可能感兴趣的:(编解码知识,流媒体,播放器)