视频播放与HLS直播技术总结

上一个项目有接触到网页视频播放,给到我的是一个m3u8的文件格式,之前并没有接触到视频这一块的技术,而且对于这种文件格式也是第一次,查资料写demo折腾一番,终于成功的在网页播放m3u8格式的视频文件,这里也整理记录一下自己查询到关于视频播放还有流媒体文件播放原理的资料。

视频播放主要技术

视频播放的主要技术点,封装技术,视音频压缩编码技术,流媒体技术
封装技术:就是把视频数据和音频数据打包成一个文件的规范。既我们生活中所看到的各种视频格式,包括avi、mp4、rmvb、flv、mkv、ts等。
视音频压缩编码技术:视频是由一张一张的照片组成的,每秒24帧,如果把所有的图片存储起来,数据量会很大,基于相邻的图片只会有比较微小的差别,视频压缩的原理就是存储每张图片和上一张不一样的地方,这样就大大的压缩的视频的体积,目前常用技术包括H.264、MPEG2、VP9、VP8等,音频编码压缩主要使用AAC、AC-3、MP3、WMA。
流媒体技术:流媒体技术主要用于网络视频播放和直播,在所有封装格式中,除了avi其他都支持流媒体。

视频播放原理

 


解协议:这一步主要针对流媒体,本地文件播放不需要,将流媒体协议数据解析为相应的封装格式。
解封装:输入的封装格式数据,分离成为视音频流的压缩编码数据。
解码:讲视音频流解码成非压缩的原始数据。

 

当前主要直播技术

 

目前最常用的是HLS协议,因为支持度高,技术简单,但是延迟相对于其他的直播技术非常严重

HTTP Live Streaming (also known as HLS) is an HTTP-based media streaming communications protocol implemented by Apple Inc. as part of its QuickTime, Safari, OS X, and iOS software. It resembles MPEG-DASH in that it works by breaking the overall stream into a sequence of small HTTP-based file downloads, each download loading one short chunk of an overall potentially unbounded transport stream. As the stream is played, the client may select from a number of different alternate streams containing the same material encoded at a variety of data rates, allowing the streaming session to adapt to the available data rate. At the start of the streaming session, HLS downloads an extended M3U playlist containing the metadata for the various sub-streams which are available.[2]

这是wikipedia上关于HLS的介绍,他是由苹果公司推出的基于HTTP的流媒体网络传输协议。
主要由两部分构成,.m3u8的palylist索引文件,一个是ts封装格式的视频文件,客户端获取m3u8文件之后,根据索引再请求下载对应的ts文件,流程如下:


将录制的视频使用MPEG-2编码切片,生成索引文件和ts格式的切片视频,client客户端通过HTTP请求获取。
目前移动端和Safari可以用HTML5的viedo标签直接播放,其他浏览器需要做兼容,现在有很多的基于hls的兼容方案,包括video.js的videojs/videojs-contrib-hlshls.jsChimeejs/chimee等。
这些HLS的兼容方案工作原理大概相同:

 

  • 通过http请求获取索引文件
  • 将传输的视频流二进制数据封装成可直接播放的视频格式
    videojs-contrib-hls是利用video.js里SWF的一个特殊模块,将视频二进制数据打包成flv格式
    hls.js是转化成MP4格式
  • 使用appendBuffer将视频片段添加到SourceBuffer



作者:水一川
链接:https://www.jianshu.com/p/8845b976fcaf
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

一款免费的流媒体直播软件,主要用于流媒体直播视频直播视频点播,视频录制等应用,与FMS、WOWZA、RED5一道,作为用户流媒体直播应用的可选方案。 1、支持Windows/Linux等多种操作系统; 2、采用开发的流媒体协议,而非私有协议,可以与主流系统对接,至少支持RTMP推流,RTMP拉流,RTSP拉流三种方式获取直播流,支持对获取的直播流再按照TS组播或者单播,RTMP,RTSP,HLS,TS OVER HTTP,FLV OVER HTTP等标准流媒体协议的方式进行对外直播转发; 3、支持录制,可定时录制或手动录制,能录制MP4或者FLV格式文件,录制时支持生成新文件或者追加文件两种方式,支持录制超过4G的文件; 4、单台服务器可支持1000个以上并发用户,直播延时小于2秒; 5、支持RTMP转发功能,能够把AMS上的直播流转发给其它AMS服务器或者第三方的RTMP服务器,例如RED5,FMS,WOWZA流媒体服务器; 6、 支持PC/手机/平板电脑等多终端访问,无论是windows,linux,或者andriod以及IOS系统访问收看直播时都无需下载插件,直接观看; 7、响应点播时间控制在100ms以内,支持暂停、拖动等特技操作; 8、支持文件直播,可把硬盘上存在的FLV文件编目后,按设定好的任务和顺序进行直播; 9、内置Web应用系统,无需复杂配置,可直接部署到用户服务器使用,也可以选配更复杂的媒资管理系统,完成类似优酷土豆的应用模式; 10、开放的系统架构,提供二次开发接口,可轻松的融入到用户已有的平台或网站平台中、或在此基础上进行二次开放等 ------------------------------------------------------------------------- 使用说明: 1、关于安装运行:软件解压到硬盘上后,执行AokuMServiceManager,即可完成AMS服务的安装,安装完成后,在Windows系统服务中会出现一个AokuMService服务; 2、关于端口:AMS默认的管理端口是9001,可通过浏览器登陆http://127.0.0.1:9001/main.html进行管理;AMS默认的RTMP端口是1935,默认的rtsp端口是5554,默认的flv over http端口是7000,默认的ts over http端口是8008,默认的hls端口也是9001; 3、关于推流:使用直播你需要有一个支持rtmp推流的编码器,建议用奥酷全接口高清编码器,当然你也可以通过FME进行软编码来实现; 4、关于接收直播:AMS正常启动并发布上直播流后,你可以在网络内的任一电脑上打开http://ip:9001,通过浏览器观看直播,若开启了hls功能,通过iphone或者ipad登陆http://ip:9001即可观看直播。 5、若开启了TS组播,请确认防火墙是否允许组播,另外您网络内的路由器是否支持组播,接收组播是需要用VLC播放器来完成; 6、接收flv over http也是通过VLC播放器或者支持类似协议的播放器来测试。 7、若使用中出现问题,你可以查看logs目录下的rtmpserver.log文件,里面有详细的错误日志描述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值