一:直播和点播的区别及有的格式
1:视频直播的播放内容是媒体直播流的形式,不存在物理文件,视频画面和声音信息都是实时采集、传输和播放的。如果没有录制模块,视频画面和声音播放完毕就消失了,不能提供二次播放。而视频点播的播放内容一般都是存储在物理磁盘里的视频文件。
2:首先说视频直播,视频直播会涉及一个比较完整的视频处理流程,包括视频画面和声音采集、视频编码、组包发送、网络传输、收包解包、视频解码、视频渲染和声音播放等。
相对而言,视频点播包括的流程就比较少了,一般只涉及文件读取、网络传输、视频解码、视频渲染和声音播放等流程,不会涉及视频画面和声音采集、视频编码、组包。
3:视频直播和视频点播在技术架构方面也存在明显的差异。视频直播,常见的低延时方案大多是 RTC 方案,比如 WebRTC;大会直播类的场景一般是 CDN 方案,常用 rtmp、hls 等流媒体协议方案。当然也有别的方案,这里不展开讨论,后续专门介绍。
视频点播,常用的有电视信号和网络协议,比如 http,https 等,视频格式有 m3u8、mp4、flv、mkv、mxf 等。由于上述网络协议和传输信号的差异,视频直播和视频点播的播放器方案有所不同,也是二者的显著差异之一
直播和点播的区别_音视频开发老舅的博客-CSDN博客
二:RTMP、RTSP、m3u8、flv、 mp4、f4v区别及含义 格式文件的对比
RTMP 与 RTSP 是比较常见的两种流媒体协议。
流媒体协议是一种用于通过 Web 传递多媒体的协议。
每次观看直播或点播视频时,背后的技术就是流媒体协议。
RTMP
英文全称:Real Time Messaging Protocol
中文意思:实时消息协议
底层协议:TCP
应用级视频流协议
视频编解码器:H.264
音频编解码器:AAC
延迟:3 - 30 秒
RTMP 最大优点 是可以在服务器和客户端服务器之间保持稳定的连接,
无论用户的互联网连接质量如何,它都可以无缝低延迟进行流媒体传输。
这个技术主要通过将数据流分成相等的小部分并将它们顺序传输到接收设备,然后将它们重新组合成视频流来实现的。
RTMP 最大的缺点 是它与 HTML5 播放器不兼容,这样的话必须使用另一种协议,例如 HLS来传输视频文件到达用户的设备,此外,RTMP 容易受到带宽问题的影响
RTSP
英文全称:Real Time Streaming Protocol
中文意思:实时流协议
底层协议:TCP 和 UDP
网络控制协议
视频编解码器:H.265
音频编解码器:AAC
延迟:2 秒
RTSP 支持可靠的分段流,这意味着用户可以在仍在下载流的同时继续观看流,Android 和 iOS 设备没有开箱即用的 RTSP 兼容播放器,所以普及度并不高,
但 RTSP 在许多监控 和闭路电视 (CCTV) 应用非常广泛,远程摄像头、在线教育和互联网直播等,都用的比较频繁。
RTMP 与 RTSP 区别
延迟
RTMP:3-30秒
RTSP:2-5秒
优点
RTMP:低延迟 适应性 灵活性 不需要缓冲
RTSP:低延迟 分段流式传输
缺点
RTMP:带宽问题 HTML5 不支持 某些浏览器和设备的兼容性问题 安全性有点低
RTSP:HTTP 不兼容 依赖于其他协议
RTMP 与 RTSP 该如何选择?
IP 摄像机、物联网设备,那么选择 RTSP准不会错
第三方流媒体应用,那么选择RTMP准不会错
m3u8准确来说是一种索引文件。
使用m3u8文件实际上是通过它来解析对应的放在服务器上的视频网络地址,从而实现在线播放。
使用m3u8格式文件主要因为可以实现多码率视频的适配,视频网站可以根据用户的网络带宽情况,自动为客户端匹配一个合适的码率文件进行播放,从而保证视频的流畅度。
现在的视频网站采用的是流媒体传输协议,就是将一段视频切成无数个小段,这几个小段就是ts格式的视频文件,一段一段的网站上播放。
这样做的好处是观看更加流畅,因为他会根据网络状况自动切换视频的清晰度,在网络状况不稳定的情况下,对保障流畅播放非常有帮助。
如果直接加载mp4或者flv文件,当文件很大时,比如一集电影2个小时,1080p的可能有2G的大小,直接加载会很慢,如果进行切片,这样只需要加载m3u8文件,根据m3u8里的索引进行播放,这种加载会很快。
flv是流式文件
flv文件可以边传输边解析
flv文件可以一边下载一边观看,
flv格式不用全部下载完毕,就支持解析观看等
mp4:
MP4是一种多媒体格式,它可以存储视频、音频和其他数据,可以跨平台,最常见封装格式,后缀.mp4。
MP4文件是由一系列标准编码和解码器组成的,它的编码和解码器比较复杂,在播放MP4文件之前,得先将文件下载完成,再播放。因为MP4文件的编码和解码器需要时间完成,如果没有先将文件下载完成,播放的时候就会出现卡顿的现象,可能会出现视频播放不流畅的情况。
MP4文件的编码和解码器还可以提高文件的压缩率,这样可以节省存储空间
MP4格式详解_~小生的博客-CSDN博客
m3u8
文件格式与mp4
之间有什么区别
m3u8 和 mp4 格式都可以用来防止视频盗链。m3u8 是一种基于 HTTP 的流媒体格式,它使用一个 .m3u8 文件来指示浏览器如何下载并播放视频。mp4 是一种通用的视频格式,可以在大多数浏览器和设备上播放。
M3U8视频格格式其实是一种M3U,只是它的编码格式是UTF-8格式。M3U用Latin-1字符集编码。M3U8格式特点是带有一个目录信息或文件。
MP4视频文件 即 mp4 (文件格式) 。 MPEG-4包含了MPEG-1及MPEG-2的绝大部份功能及其他格式的长处,并加入及扩充对虚拟现实模型语言(VRML , VirtualReality Modeling Language)的支持,面向对象的合成档案(包括音效,视讯及VRML对象),以及数字版权管理(DRM)及其他互动功能。而MPEG-4比MPEG-2更先进的其中一个特点,就是不再使用宏区块做影像分析,而是以影像上个体为变化记录,因此尽管影像变化速度很快、码率不足时,也不会出现方块画面。
如果你要在一段长达一小时的视频中跳转,如果使用单个 MP4 格式的视频文件,并且也是用 HTTP 协议,那么需要代理服务器支持 HTTP range request 以获取大文件中的一部分。不是所有的代理服务器都对此有良好的支持。
m3u8则只需要根据列表文件中的时间轴找出对应的 TS 片段下载即可,不需要 range request,对代理服务器的要求小很多。所有代理服务器都支持小文件的高效缓存。
两个 TS 片段可以无缝拼接,播放器能连续播放,而 MP4 文件由于编码方式的原因,两段 MP4 不能无缝拼接,播放器连续播放两个 MP4 文件会出现破音和画面间断,影响用户体验
F4V是Adobe公司为了迎接高清时代而推出继FLV格式后的支持H.264的流媒体格式。它和FLV主要的区别在于,FLV格式采用的是H263编码,而F4V则支持H.264编码的高清晰视频,码率最高可达50Mbps
直播过程及可能会涉及到的协议和格式
视频播放流程
平时我们播放一个视频(本地或者在线)的时候,有想到过这个视频是如何播放出来的吗? 其实从我们点击播放开始,到最后我们看到视频,这中间经历了一系列的流程。你也许会很惊讶吧,我就点击了一个视频观看,没想到中间还会有这么多的过程呢!这些不可见的过程要感谢工程师们默默的付出。
本文将就在线播放视频播放的流程做一些介绍:
1:流媒体协议解析
当你点击在线视频的时候,视频很快就会播放出来。你也许会很诧异一个大的视频文件咋就立即播放了呢,这视频文件是已经下载到本地了吗?其实则不然,播放器只是播放了传输了那一部分,这得益于流媒体协议。
何为流媒体协议呢? Real-time Transport Protocol是用于Internet上针对多媒体数据流的一种传输协议(属于应用层),是指将一连串数据压缩后,经过网络分段发送,即时传输以供观看音视频的一种技术。通过使用 streaming media 技术,用户无需将文件下载到本地即可播放。
那第一步就是流媒体协议解析,目的是去除一些信令数据(播放,暂停,停止等控制命令),提取出音视频数据。
2:解析封装格式
上步解析协议之后,拿到了音视频数据。这些音视频数据按照一定规则组装成mp4、flv、m3u8等格式的文件。这一步要做的是解封装,即从一个容器里面,提取出音频数据、视频数据以及音视频数据对应关系。
3:音视频解码
上一步拿到的音视频数据是没法渲染播放的,原因是为了降低始视频数据占用存储空间,视频文件通过编码压缩形式来使存储空间变小。也就是我们拿到的是压缩后的数据,这一步要做的就是通过压缩算法,还原出音视频的原始数据。对应的视频数据通过H.264/AVC、HEVC/H.265等还原出原始的视频数据(YUV或RGB格式),压缩的音频数据通过AAC还原出原始的音频数据(PCM格式)。
4:音视频同步
这一步要做的就是视频数据与音频数据的同步问题,即视频播放的画面与播放的声音对应的上。 常用的同步方式有如下三种: - 音频为主时钟(视频同步到音频) - 视频为主时钟(音频同步到视频) - 外部时钟(系统时间)为主时钟(视频、音频同步到外部时钟)
主流的是音频为主时钟,即视频播放过快,则重复播放上一帧,以等待音频;如果视频播放过慢,则丢帧追赶音频。
5:渲染与播放
同步后的数据,视频数据送到显卡渲染,音频数据送到声卡播放。
6:总结
一个完整的在线播放流程包括:解析协议 -> 解析封装格式 -> 音视频解码 -> 音视频同步 -> 渲染与播放。
在解析出音频数据之后,我们可以再做一些特殊处理,比如对视频数据添加一些滤镜、特效转场等,对音频数据做一些降噪等操作。
视频播放流程_SkyNullCode的博客-CSDN博客