发现很多人对视频格式存在一些误解,之前写的一篇文章讲AVPlayer的支持格式也有一些问题,所以这里单独出一篇文章讲一下,希望大家能明白。

基本概念

一个在线视频能够播放,大致是经过了如下步骤:

可以总结为:拉数据->解协议->解封装->音视频解码->音视频同步->播放。 下面就针对这几个概念一一做下解释:

播放协议

一般点播采用HTTP,而直播的话,大部分还是采用RTMP或者私有协议,原因是延时会比较小,RTMP本身也是为了直播设计的。常见的流媒体协议:

简写 全称 推出机构 目前使用领域
HLS HTTP Live Streaming 苹果 多应用于苹果
RTP 实时传输协议 IETF 范围较广
RTCP 实时传输控制协议 IETF 范围较广
RTSP 实时串流协议 RealNetworks等 范围较广
RTMP 实时消息协议 Adobe 较流行
MMS 串流媒体协议 Microsoft 范围较广

RTP/RTSP/RTCP的区别

RTSP发起/终结流媒体、RTP传输流媒体数据 、RTCP对RTP进行控制,同步。

HLS(Http Live Streaming) HLS是苹果推出,实现的基于HTTP的流媒体传输协议: 优点: 1、通过m3u8索引文件可实现针对当前浏览设备的智能选择播放源, 2、通过m3u8索引文件可实现添加备份索引文件,防止服务器崩溃视频播放失败 3、和http视频一样 不需要太多服务器额外配置 缺点: 1、并非真正实时视频,30s左右时间差 2、需要视频处理 3、因为需要请求索引文件(ts视频文件)请求次数相对较多,对服务器负载较大

视频编码

所谓视频编码方式就是指通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件的方式。它是一种为了减少视频体积,同时保证画面质量的压缩技术,常见的视频编码有:

名称 推出机构 推出时间 目前使用领域
HEVC(H.265) MPEG/ITU-T 2013 研发中
H.264 MPEG/ITU-T 2003 各个领域
MPEG4 MPEG 2001 不温不火
MPEG2 MPEG 1994 数字电视
XviD OpenDivX 2002 流行
VP9 Google 2013 研发中
VP8 Google 2008 不普及
VC-1 Microsoft Inc. 2006 微软

H.264

H.264又叫AVC,是国际标准化组织(ISO)和国际电信联盟(ITU)共同提出的继MPEG4之后的新一代数字视频压缩格式,它集合了H.263和MPEG4的优点,拥有更高的数据压缩比。在同等的图像质量条件下,H.264的数据压缩比能比H.263高2倍,比MPEG-4高1.5倍。 也是目前苹果支持最好的编码格式。

音频编码

和视频编码类似,音频编码的作用是减少音频中的冗余,同时在保证一定音频质量的条件下作的压缩处理。

名称 推出机构 推出时间 目前使用领域
AAC MPEG 1997 流媒体
AC-3 Dolby Inc. 1992 DVD, 数字电视
MP3 MPEG 1993 各个领域(旧)
WMA Microsoft Inc. 1999 Windows

AAC AAC(高级音频编码技术 Advanced Audio Coding),出现于1997年,是基于MPEG-2的音频编码技术。由Fraunhofer IIS、杜比、苹果、AT&T、索尼等公司共同开发,以取代mp3格式。2000年,MPEG-4标准出台,AAC从新整合了其特性,故现又称MPEG-4 AAC,即m4a。 苹果的CoreAudio对AAC有较好的支持。

封装格式

我们常见的视频格式MP4, AVI, RMVB, 3GP, MKV都是指视频的封装格式,大部分情况就是视频文件的后缀。常见的组合方式有:

名称 简介 常用编码格式 扩展名
Flash Video 由Adobe Flash延伸出来的的一种流行网络视频封装格式。随着视频网站的丰富,这个格式已经非常普及。 H.264+MP3 flv
AVI(Audio Video Interleave) 比较早的AVI是微软开发的。其含义是Audio Video Interactive,就是把视频和音频编码混合在一起存储。AVI也是最长寿的格式,已经存在10余年了,虽然发布过改版(V2.0于1996年发布),但已显老态。AVI格式上限制比较多,只能有一个视频轨道和一个音频轨道(现在有非标准插件可加入最多两个音频轨道),还可以有一些附加轨道,如文字等。AVI格式不提供任何控制功能。 Xvid+MP3 avi
WMV(Windows Media Video) 同样是微软开发的一组数字视频编解码格式的通称,ASF(Advanced Systems Format)是其封装格式。ASF封装的WMV档具有“数字版权保护”功能。 VC-1+WMA wmv/asf
MPEG(Moving Picture Experts Group) 是一个国际标准化组织(ISO)认可的媒体封装形式,受到大部分机器的支持。其存储方式多样,可以适应不同的应用环境。MPEG-4档的档容器格式在Part 1(mux)、14(asp)、15(avc)等中规定。MPEG的控制功能丰富,可以有多个视频(即角度)、音轨、字幕(位图字幕)等等。MPEG的一个简化版本3GP还广泛的用于准3G手机上。 H.264+AAC,H263+AAC dat(VCD),vob(DVD), mp4, 3gp
Matroska 是一种新的多媒体封装格式,这个封装格式可把多种不同编码的视频及16条或以上不同格式的音频和语言不同的字幕封装到一个Matroska Media档内。它也是其中一种开放源代码的多媒体封装格式。Matroska同时还可以提供非常好的交互功能,而且比MPEG更方便、强大。 各种编码格式的组合 mkv
Real Video Real Media(RM) 是由RealNetworks开发的一种档容器。它通常只能容纳Real Video和Real Audio编码的媒体。该档带有一定的交互功能,允许编写脚本以控制播放。RM,尤其是可变比特率的RMVB格式,没有复杂的Profile/Level,制作起来较H.264视频格式简单,非常受到网络上传者的欢迎。此外很多人仍有RMVB体积小高质量的错误认知,这个不太正确的观念也导致很多人倾向使用rmvb,事实上在相同码率下,rmvb编码和H.264这个高度压缩的视频编码相比,体积会较大。 RealVideo+RealAudio rm/rmvb
QuickTime File Format 是由苹果公司开发的容器。1998年2月11日,国际标准化组织(ISO)认可QuickTime文件格式作为MPEG-4标准的基础。QuickTime可存储的内容相当丰富,除了视频、音频以外还可支持图片、文字(文本字幕)等。 H.264+AAC mov, qt

MP4 mp4格式是H.264编码指定使用的标准封装格式,3GP是MP4格式的一种简化版本,减少了储存空间和较低的频宽需求,让手机上有限的储存空间可以使用。

实际上这些封装格式对应的音频视频编码格式也不是固定的,就拿MP4来说,常见的MP4是由H.264+AAC封装,但是也由Xvid+AAC编码的可能。如果解码器不支持Xvid,则可能会出现无法播放,或者播放播放过程有声音无画面的情况。

苹果支持哪些音视频编码格式

我们可以在手机介绍界面,找到手机支持的视频格式iPhone - Compare Models - Apple

这里我们可以找到对应iPhone7支持的视频编码格式:

Video formats supported: HEVC, H.264, MPEG-4 Part 2, and Motion JPEG

HEVC 又叫H.265,iOS11+A9芯片才开始对HEVC的支持,iPhone6s及以前的设备不支持HEVC解码。 音频格式用红框标出来了,内容较多,可自行对比。

AVPlayer支持哪些视频格式

苹果设备支持音视频格式并不是就代表AVPlayer也支持那么多格式,确定AVPlayer的支持格式,我们可以查看AVKit中的一个API:

//展示当前支持的音视频格式
let asset = AVURLAsset.audiovisualTypes()
//打印asset可以得到(已经转过展示格式)
asset type ("audio/aacp","video/3gpp2","audio/mpeg3","audio/mp3","audio/x-caf","audio/mpeg","video/quicktime","audio/x-mpeg3","video/mp4","audio/wav","video/avi","audio/scpls","audio/mp4","audio/x-mpg","video/x-m4v","audio/x-wav","audio/x-aiff","application/vnd.apple.mpegurl","video/3gpp","text/vtt","audio/x-mpeg","audio/wave","audio/x-m4r","audio/x-mp3","audio/AMR","audio/aiff","audio/3gpp2","audio/aac","audio/mpg","audio/mpegurl","audio/x-m4b","application/mp4","audio/x-m4p","audio/x-scpls","audio/x-mpegurl","audio/x-aac","audio/3gpp","audio/basic","audio/x-m4a","application/x-mpegurl"
)
复制代码

还有一个方式用来判断当前格式是否可播:

//An extended MIME type string such as video/3gpp2; codecs="mp4v.20.9, mp4a.E1" or audio/aac; codecs="mp4a.E1".
let playable: Bool = AVURLAsset.isPlayableExtendedMIMEType("video/3gpp2; codecs=\"mp4v.20.9, mp4a.E1\"")
复制代码

这里的MIMEType可以在这里找到 System-Declared Uniform Type Identifiers

总结 由此我们可以下一个总结,AVPlayer支持的: 视频编码格式:H.264、HEVC(iPhone7及以后设备)、MPEG-4。 视频格式(封装格式):.mp4、.mov、.m4v、.3gp、.avi等。 如果想支持更多的视频格式,可以使用使用第三方的框架,常用的视频编码和解码框架有VLC和ffmpeg。

参考文献

视频文件格式 - 维基百科,自由的百科全书 音频编码格式的比较 - 维基百科,自由的百科全书

转载于:https://juejin.im/post/5bfca10ce51d45735e4fec19

AVPlayer支持的视频格式相关推荐

  1. video视频相关问题:火狐浏览器报错“没有找到支持的视频格式和MIME类型”

    1.需求:上传 .mp4 格式的视频到服务器,然后获取展示到前台页面. 2.遇到的问题:在谷歌浏览器上能正常显示视频,但是在火狐浏览器不能显示视频,提示:"没有找到支持的视频格式和MIME类 ...

  2. 三星s8是否支持html,三星Galaxy S8支持什么视频格式

    三星Galaxy S8支持什么视频格式 三星Galaxy S8支持MPEG4,H.264/AVC,H.263/3GP,RealVideo等视频格式. 关于三星Galaxy S8支持什么视频格式的疑问, ...

  3. 计算机视频格式有哪些,在线视频网站支持的视频格式有哪些?

    在线视频网站支持的视频格式有哪些?网上冲浪也需要具备一定的上网技巧.大家都知道在线视频网站的精彩内容,大多数是网友上传上去的,如果我们也想上传视频文件到在线视频网站,希望和广大网友分享的话,就需要了解 ...

  4. Android支持的视频格式

    Android支持的视频格式 1.Android端支持mp4/3gp/mov这三种视频格式,其中最常用的是前两个: 2.视频中分视频流和音频流,Android支持的在线视频中的视频流的编码格式主流的是 ...

  5. 如何在Windows 10上播放不受支持的视频格式

    Windows apps like Movies & TV and Windows Media Player allow the playback of certain types of vi ...

  6. 万能视频格式转换器是一款功能强大的全能视频格式转换软件,支持多种视频格式转换。万能视频转换器可以将R...

    万能视频格式转换器是一款功能强大的全能视频格式转换软件,支持多种视频格式转换.万能视频转换器可以将RM.RMVB.AVI.WMV.MPG .MPEG.FLV.3GP.MP4.SWF.ASF.DIVX. ...

  7. android 手机支持什么格式的视频格式,手机高清小普及:手机支持那些视频格式?...

    背景 虽然在2010年众多的手机厂商都推出了他们的高清手机,可是由于手机的硬件以及操作系统的限制,因此并不是所有的高清格式都能够在目前市面上那些支持高清播放的手机中播放.那么如果大家想要在手机上欣赏高 ...

  8. 实现浏览器支持各种视频格式文件播放

    背景 浏览器支持的视频格式有限.而ffmpeg有很强的格式转换功能.那我们能不能通过ffmpeg把不支持的视频转成浏览器可以支持的视频呢? 方案 要实现以上方案要解决几个问题: 如何实时获取ffmpe ...

  9. 解决微信视频号 当前浏览器不支持此视频格式 的错误消息

    我试图用电脑端的微信视频号助手,上传一个后缀为 mp4 的视频时,遇到如下错误消息:当前浏览器不支持此视频格式,建议上传 MP4 或 H.264 格式文件. 然而我能肯定,我是使用格式工厂这款软件,将 ...

最新文章

  1. [笔记]用VS2010编译运行项目时报“LINK : fatal error LNK1104:...
  2. 递归和迭代的区别是什么,各有什么优缺点?
  3. textarea 固定大小,滚动条,限制拖动,文字对齐
  4. link和@import的区别
  5. css在盒子中垂直居中和固定居中
  6. IDA笔记-IDA Pro基本使用
  7. dev gridview 打印列数过多_更适合孩子使用的错题打印机,超小体积什么都能打:喵喵机P3测评...
  8. 用html制作静态音乐欣赏,【HTML】简单的静态音乐网页设计
  9. 【强化学习入门】人工智能、深度学习理论框架以及学习资料
  10. LINUX网卡地址配置
  11. Mac的VIM中delete键失效的原因和解决方案
  12. 招商银行校招笔试通过技巧
  13. python 问题Some characters could not be decoded, and were replaced with REPLACEMENT CHARACTER.
  14. AD 如何查看元器件库中的3D模型?
  15. RAID卡原理与设置
  16. 认识频谱分析仪(1)- 原理及结构
  17. 函数参数传递:参数传递从右往左
  18. 创业第一步做什么?——走出自己的“舒适区”
  19. QOS 之 WRED
  20. javascript获取url信息的常见方法

热门文章

  1. 你以前学的UI设计,可能是假的?
  2. 快速学习-梅克尔-帕特里夏树
  3. struts2中页面语言国际化的方法
  4. border-bottom 自定义长度
  5. 三星电池爆炸调查出结果:生产瑕疵致正负极接触
  6. 阅读软件怎么添加书源_**爱好者必备,一个软件,两个层面全覆盖!收下它
  7. 毕业设计实验日志2021.04.18
  8. 鸿蒙生死印作用,逆天邪神:鸿蒙生死印应该有个BUG能力,两位梵天老祖身上有提示...
  9. 四大客户端视频蓄力开打反击战
  10. JavaScript 语言之随机点名器制作训练