Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件(可选)。
常用的流媒体协议主要有 HTTP 渐进下载和基于 RTSP/RTP 的实时流媒体协议,这两种基本是完全不同的东西,目前比较方便又好用的是用 HTTP 渐进下载方法。在这个中 apple 公司的 HTTP Live Streaming 是这个方面的代表。它最初是苹果公司针对iPhone、iPod、iTouch和iPad等移动设备而开发的流.现在见到在桌面也有很多应用了,HTML5 是直接支持这个。
这里介绍hls协议的点播和直播。环境为windows7系统,使用nginx搭建http服务器,使用ffmpeg处理视频和流,使用VLC软件发出流,使用iphone5手机观看直播视频。
工作流程
点播:准备好视频文件MP4,使用ffmpeg将其转成TS格式文件,然后继续使用ffmpeg将其切片并生成播放列表M3U8文件,将所得TS分片与M3U8文件放到nginx服务器目录下,开启http服务器后,同一局域网内用手机输入网络地址可查看点播视频。
直播:使用VLC软件将视频以UDP流的形式发出,使用ffmpeg接收这个UDP流并实时切割到http服务器下,开启服务器后,同一局域网内用手机输入网络地址可查看直播视频。
环境搭建
使用nginx搭建http服务器
官网下载windows版Nginx
打开配置文件nginx\conf\mime.types,为了支持hls协议,需要修改内容:
在 application/zip zip; 这一行后面增加2行:
application/x-mpegURL m3u8;
application/vnd.apple.mpegurl m3u8;
在 video/x-msvideo avi;行后,增加1行:
video/MP2T ts;
具体操作
点播:
(1)开启http服务器:双击nginx.exe
(2)使用ffmpeg将mp4格式文件转成TS格式文件:
ffmpeg -y -i input.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb output.ts
(3)使用ffmpeg将TS文件切成ts分片并产生m3u8文件:
ffmpeg -i file.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 2 output%03d.ts
(4)将所得的ts分片和m3u8文件放到nginx\html 目录下
(5)手机浏览器输入[ http://192.168.1.110:80/playlist.m3u8 ]即可看到点播视频
注:192.168.1.110是本机的局域网ip,也即http服务器的ip
直播:
(1)开启http服务器:双击nginx.exe
(2)将视频以udp流的形式从vlc上发出来(具体方法请自查)
(3)使用ffmpeg接收udp流并自动实时切片到http服务器下:
ffmpeg -i udp://127.0.0.1:1234 -c copy -f hls -hls_time 2.0 -hls_list_size 5 -hls_wrap 5 G:\nginx\html\test.m3u8
(4)手机浏览器输入[ http://192.168.1.110:80/playlist.m3u8 ]即可看到直播视频
来源:oschina
链接:https://my.oschina.net/u/2289067/blog/425514