AVPlayer支持的視頻格式

發現很多人對視頻格式存在一些誤解,之前寫的一篇文章講AVPlayer的支持格式也有一些問題,所以這里單獨出一篇文章講一下,希望大家能明白。

基本概念

一個在線視頻能夠播放,大致是經過了如下步驟:


video_play_progress.png

可以總結為:拉數據->解協議->解封裝->音視頻解碼->音視頻同步->播放。
下面就針對這幾個概念一一做下解釋:

播放協議

一般點播采用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支持的視頻編碼格式:


image.png

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等。
如果想支持更多的視頻格式,可以使用使用第三方的框架,常用的視頻編碼和解碼框架有VLCffmpeg

參考文獻

視頻文件格式 - 維基百科,自由的百科全書
音頻編碼格式的比較 - 維基百科,自由的百科全書

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,797評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,179評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,628評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,642評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,444評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,948評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,040評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,185評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,717評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,602評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,794評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,316評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,045評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,418評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,671評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,414評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,750評論 2 370

推薦閱讀更多精彩內容