windows 下 hls 的点播和直播

我只是一个虾纸丫 提交于 2019-12-03 05:02:45

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 ]即可看到直播视频

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!