HLS流媒体服务器的编译和部署
1. Http Live Streaming(HLS)简介
HTTP Live Streaming(缩写是 HLS)是一个由苹果公司提出的基于HTTP的流媒体网络传输协议,是苹果公司QuickTime X和iPhone软件系统的一部分。它的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的extended M3U (m3u8) playlist文件,用于寻找可用的媒体流。
HLS只请求基本的HTTP报文,与实时传输协议(RTP)不同,HLS可以穿过任何允许HTTP数据通过的防火墙或者代理服务器。它也很容易使用内容分发网络来传输媒体流。
此协议详细内容请参考apple官方网站:
https://developer.apple.com/resources/http-streaming/
2. HLS流媒体服务器转码模块的编译与配置
2.1 安装nasm编译器支持汇编优化(lame库需要)
对安装了apt-get的linux机器,可直接执行以下命令安装nasm。
# sudo apt-get install nasm
也可以用源代码编译并安装。先在网上获取nasm-2.10.05.tar.bz2
解压:
# tar xvf nasm-2.10.05.tar.bz2
# cd nasm-2.10.05
配置安装目录为/usr/bin:
#./configure –prefix=/usr
编译并安装:
# make
# sudo make install
2.2 安装yasm编译器支持汇编优化(ffmpeg库需要)
先在网上获取yasm的源代码。
解压:
# tar xvf yasm-1.2.0.tar.gz
# cd yasm-1.2.0
配置安装目录为/usr/bin:
#./configure –prefix=/usr
编译并安装:
# make
# sudo make install
2.3 安装lame库支持mp3音频
下载lame-3.99.5.tar.gz
从http://sourceforge.net/projects/lame/files/lame/3.99/
下载源代码包lame-3.99.5.tar.gz
# tar xvf lame-3.99.5.tar.gz
# cd lame-3.99.5.tar.gz
#./configure –enable-nasm
# make
# sudo make install
2.4 安装faac库支持mpeg4 aac音频
从http://sourceforge.net/projects/faac/files/faac-src/faac-1.28/
下载faac-1.28.tar.gz
# tar xvf faac-1.28.tar.gz
# cd faac-1.28
#./configure –with-mp4v2
# make
# sudo make install
2.5 安装libogg库支持ogg音频
从http://downloads.xiph.org/releases/ogg/
下载libogg-1.3.1.tar.gz
# tar xvf libogg-1.3.1.tar.gz
# cd libogg-1.3.1
#./configure
# make
# sudo make install
2.5 安装vorbis库
从http://downloads.xiph.org/releases/vorbis/
下载libvorbis-1.3.3.tar.gz
# tar xvf libvorbis-1.3.3.tar.gz
#./configure
# make
# sudo make install
2.6 安装theora库
从http://downloads.xiph.org/releases/theora/
下载libtheora-1.1.1.tar.gz
# tar xvf libtheora-1.1.1.tar.gz
# cd libtheora-1.1.1
#./configure
# make
# sudo make install
2.7 安装x264库支持h.264视频转码
执行以下命令获取x264的最新源代码
# git clone git://git.videolan.org/x264.git
# cd x264
#./configure --enable-shared
# make
# sudo make install
2.8 安装xvid库支持mpeg4视频转码
执行
# wget http://downloads.xvid.org/downloads/xvidcore-1.3.2.tar.gz
获取最新的xvid mpeg4编解码器源代码
# tar xvf xvidcore-1.3.2.tar.gz
# cd xvidcore /build/generic
# ./configure
# make
# sudo make install
2.9 安装libnut
该软件需要用svn获取源代码,svn可以直接用yum install svn来装。
先下载:
# svn co svn://svn.mplayerhq.hu/nut/src/trunk libnut
下载后代码保存在新建立的libnut目录下,对于64位Linux需要修改配置文件:
# cd libnut
# vi config.mak
在最后一个CFLAGS下一行增加:
CFLAGS += -fPIC
然后编译安装:
# make
# sudo make install
2.9 修改链接环境变量
上面的媒体支持库安装完后,可以设置下环境准备编译ffmpeg了。不过在此之前必须修改环境变量
# vi /etc/ld.so.conf
在文件末增加一行:
/usr/local/lib
然后生效之:
# ldconfig
2.10 编译ffmpeg
执行以下命令获取ffmpeg源代码
# git clone git://git.videolan.org/ffmpeg.git ffmpeg
# cd ffmpeg
# ./configure --enable-gpl --enable-nonfree --enable-pthreads --enable-libnut --enable-libfaac --enable-libtheora --enable-libvorbis --enable-libmp3lame --enable-libx264 --enable-libxvid
# make
# sudo make install
3. TS流分割器segmenter的安装与使用
从https://github.com/johnf/m3u8-segmenter
下载m3u8-segmenter 下载后不要用它的反复编译,直接取m3u8-segmenter.c文件。
执行
# gcc -Wall -g m3u8-segmenter.c -o segmenter -lavformat
编译生成可执行文件