linux下搭建HLS流媒体服务器(点播)

 2017-07-12 01:07:27  linux  roy
 (3156)  (0)

HLS的是什么?

HLS (HTTP Live Streaming),Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件。


技术选型

内容准备服务中的编码器采用ffmpeg,流切片采用Segmenterweb服务器采用Nginx对于支持html5的浏览器可采用html5技术进行播放。


安装配置

1.首先安装服务依赖

yum -y  install gcc-c++  pcre pcre-devel zlib zlib-devel openssl openssl-devel automake autoconf libtool make


2.安装nginx

wget http://nginx.org/download/nginx-1.8.1.tar.gz
tar -xvf nginx-1.8.1 -C /usr/local ln -s nginx-1.8.1 nginx
 
 cd html && mkdir hls


3.安装yasm依赖

wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
tar zxvf yasm-1.2.0.tar.gz
cd yasm-1.2.0
./configure –prefix=/usr/local
Make
make install
查看yasm是否可以执行,不能执行就将/usr/local/bin加入可执行路径


4.安装ffmpeg

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它包括了目前领先的音/视频编码库libavcodec。可以轻易地实现多种视频格式之间的相互转换,例如在本例中可以把MP4,MOV等文件转成我们用来切片的MPEG-TS文件。

wget http://ffmpeg.org/releases/ffmpeg-2.2.tar.gz
tar zxvf ffmpeg-2.2.tar.gz
cd ffmpeg-2.2
./configure –prefix=/usr/local
Make
make install


5.安装segmenter切片工具

使用segmenter工具获得m3u8所引文件以及视频切片ts文件

yum -y install git
git clone https://github.com/johnf/m3u8-segmenter.git
cd m3u8-segmenter
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure
make
make install
 ln -s /usr/local/bin/m3u8-segmenter /usr/local/bin/segmenter


6.上传视频文件course.mp4


7.把视频文件转换成ts视频文件

ffmpeg命令使用:ffmpeg -y -i  -vcodec copy -acodec copy -vbsf h264_mp4toannexb 

                            其中in file为待转换的视频文件,比如input.mp4,output file为转换后的文件,要命名为output.ts

ffmpeg -y -i course.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb output.ts


8.把ts文件切成多个小的ts文件

segmenter 命令使用:segmenter -i out.ts -n 10 -p cc -m course.m3u8 -u http://192.168.137.88/hls/

i表示输入文件,n表示切割10秒,p表示切割文件的前缀。m表示生成的m3u8文件名,u表示这些切割后的文件处于nginx的哪个目录下。

当然也可以把多个切割后的ts文件合并:

ffmpeg -i "concat:1.ts|2.ts" -acodec copy -vcodec copy -absf aac_adtstoasc output.mp4


9.配置nginx

/usr/local/nginx/conf/nginx.conf 保持默认配置
查看 /usr/local/nginx/conf/mime.types 是否有

 application/x-mpegURL                 m3u8;

 video/MP2T                       ts;

默认是有的,如果没有就添加上


10.使用video.js来播放hls的视频

<html>
        <head>
                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
                <title>hls 视频播放title>
                <link href="http://vjs.zencdn.net/6.2.0/video-js.css" rel="stylesheet">
                
                 <script src="http://vjs.zencdn.net/ie8/1.1.2/videojs-ie8.min.js">script>
                <script src="http://vjs.zencdn.net/6.2.0/video.js">script>
                <script src="https://cdnjs.cloudflare.com/ajax/libs/videojs-contrib-hls/5.8.0/videojs-contrib-hls.min.js">script>
        head>
        <body>
                <video id="example-video" class="video-js vjs-default-skin" controls height="500" width="900">
                        <source src="http://192.168.137.88/hls/course.m3u8" type="application/x-mpegURL">
                video>
        <script>
                var player = videojs('example-video');
                player.play();
        script>
        body>
html>


11.启动nginx,并访问html页面播放视频

cd /usr/local/nginx/sbin
./nginx

http://192.168.137.88/course.html


参考文献:

https://segmentfault.com/a/1190000007532559

http://yaocoder.blog.51cto.com/2668309/1435771


  


打赏, 我要小额赞助,鼓励作者写出更好的文章
<< 上一篇:1.什么是工作流
>> 下一篇:Linux下安装mysql

评论列表



您还没有登录,登录后才能发表评论,请【登录】