流媒体视频直播方案
流媒體視頻直播方案
背景在視頻直播領域,有不同的商家提供各種的商業解決方案,包括軟硬件設備,攝像機,編碼器,流媒體服務器等。本文講解如何使用一系列免費工具,打造一套視頻直播方案。
視頻直播方案的組成,可以分為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?
總結
- 上一篇: iOS视频直播学习
- 下一篇: 直播协议的选择:RTMP vs. HLS