聂长君
(作者单位:德阳市广播电视台)
HLS协议是苹果公司研发的一种动态码率自适应技术。包含了一个m3u(8)索引文件和TS媒体分片文件以及key加密串文件(可选)。它主要用于电脑和苹果设备终端的音视频服务。
HLS文件是后缀为m3u8的文本列表文件,用记事本打开就可以看到结构。m3u文件的utf-8格式而已,里面的视频列表就是ts。直播时,播放器会定时反复请求这个文件,文件随时更新就成直播,建议是10 s。
IP组播技术有其独特的优越性:在组播网络中,即使用户数量成倍增长,主干带宽不需要随之增加。这个优点使它成为当前网络技术中的研究热点之一。IP组播在一些多用户定向发送的网络应用中使用非常普遍,如远程多媒体会议、远程教学、视频点播、定向电子商务,以及ISP的IPTV(网络电视)等。
一个组播IP地址能够标识网络不同位置的多个用户主机,多播地址范围为224.0.0.0~239.255.255.255。
Nginx是一款轻量级的HTTP(Web服务器)/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。其特点是并发能力强,占有内存少,事实上Nginx的并发能力在同类型的网页服务器中表现较好。目前,使用Nginx网站的用户有:淘宝、腾讯、京东、百度、新浪、网易等。
FFmpeg不仅可以用来记录、转换数字音频、视频,还能将其转化为流的开源计算机程序。FFmpeg使用LGPL或GPL许可证,具有非常强大的功能,包括视频抓图、视频格式转换、视频采集功能、给视频加水印等。它使用了非常先进的音视频编解码库libavcodec,为保证超高的编解码质量和可移植性,libavcodec里很多code都是从头开发的。它提供了录制、转换以及流化音视频的完整解决方案。
VLC是一款开源的跨平台多媒体播放器,可在所有平台上运行(Windows,Linux, Mac OS X, Unix, iOS, Android)。它支持众多音频与视频解码器,如常见的:MPEG*、DIVX、WMV、MOV、3GP、FLV、H.264、FLAC。有多种访问形式:文件、光盘、http、ftp、mms、TCP/UDP、RTP/RTSP、IP组播、IPv4/IPv6等。它还能够作为unicast或 multicast的流服务器,可以在IPv4或 IPv6的网络环境下使用。此外,其还融合了FFmpeg的解码器以及libdvdcss程序库,带有播放多媒体文件以及加密DVD影碟的功能。它完全免费、无间谍软件、无广告、无跟踪用户隐私的行为,是我们常用的一款流媒体及视音频播放软件。
图1 Windows下HLS直播流的搭建(本文服务器:LMT-959)流程图
图1是基于Windows的HLS直播流的搭建(本文服务器:LMT-959)流程图,具体步骤如下。
解压Nginx软件后,打开配置文件confmime.types,为了支持hls协议,需要修改内容:
在 application/zip zip;这一行后面增加2行:
application/x-mpegURL m3u8;
application/vnd.apple.mpegurl m3u8;
在 video/x-msvideoavi;行后,增加1行:
video/MP2Tts;
注意:不要有中文路径,若任务管理器中没有ngnix的两个进程,则未启动成功。解决方案如下:
第一,关闭Windows防火墙。
第二,80端口被占用了(80端口为Nginx默认的配置,本文使用8081作为测试端口号)。需要修改文件conf ginx.conf,将里面的
server{
listen 80;//改为其他未被占用的端口号。
第一,使用RJ45双绞线把服务器与IPTV编码器连接起来,使服务器能够读取出IPTV编码器的UDP流。
用VLC打开网络串流(本文地址:udp∶//231.3.106.3∶1001)查看是否正常。
第二,编辑批处理文件运行或在C MD下运行。
d∶ffmpeg64inffmpeg-iudp∶//231.3.106.3∶1001 -strict -2 -c∶v libx264-b 1000000 -c∶aaac -hls_time 10 -hls_wrap 3 -f hls D∶ ginx-1.10.3htmldytv.m3u8
第三,在客户端电脑中使用VLC打开网络串流(本文地址:http∶//lmt-959∶8081/dytv.m3u8)播放测试,如图2所示。
图2 播放测试
第四,要想在互联网上播放此HLS流地址,可以使用带有固定IP出口的路由器端口映射到Nginx服务器。至此,苹果、安卓、微软等系统的手机、平板、电脑等都能播放此HLS直播流。
HLS协议相较于RTMP、RTSP、MMS等直播流媒体协议,不同在于:在服务器端,HLS将直播数据流存储为连续的、很短时长的MPEG-TS格式媒体文件,而客户端则不断下载并播放这些连续的TS小文件。我们可以这样认为,HLS是以点播的技术方式来实现直播。由于使用HTTP协议传输,所以完全不用考虑防火墙及代理的问题,加上分段文件时长很短,客户端可以快速选择和切换码率,以适应不同带宽环境条件下的播放。但由于HLS的这种技术特点,它的延迟一般会高于普通的流媒体直播协议。
HTTP渐进下载(如:HLS协议)和基于RTSP/RTP的实时流媒体协议,是两种完全不同的东西,目前比较好用又方便的是用HTTP渐进下载方法。其中,Apple公司的HLS协议是这方面的代表。它最初是苹果公司针对iPhone、iPad等移动设备开发的流媒体直播协议。现在,HTML5直接支持HLS,安卓(Android)也原生支持HLS,而微软从Internet Explorer 9(简称IE9)就开始支持HTML5了,所以HLS是全平台直播流。