首先,明確幾個關於視頻的基本概念
- 一個視頻檔案是由視頻流和音頻流組成,打包在一起。這涉及到3個格式,視頻的格式,音訊格式,打包檔案的格式。
- 常見的檔案打包格式有 .mp4, .avi, .mov, .3gp 等。打包格式不等於裡面的視頻格式,所以只看檔案的名字,是沒法知道裡面的音視頻是什麼格式的。
- 常見的視頻格式有:H.264, MPEG-4 Video, H.263, MPEG-2 Video等等。
- 常見的音頻格式有:MP3, AAC, AMR等等
換句話說:mp4、m4v、3gp等等這些是檔案打包格式,不是視頻編碼格式。可以理解成ZIP、RAR這種壓縮檔包。h.264, MPEG-4, h.263等等,這些才是視頻編碼格式。要想讓手機播放一個視頻,這個手機必須既能解開打包檔案,又能解碼裡面的視頻流才行。就如同你發給別人一個RAR壓縮的word檔案,那個人必須有解壓縮rar的軟體並且也有word才能看。
其次,關於MPEG-4,Profile和Level
MPEG-4是關於音視頻的一系列標準的統稱,包括很多部分。其中,第2部分定義了一種視頻格式,叫做MPEG-4 Video;第10部分定義了另一種視頻格式,叫做MPEG-4 AVC,也叫H.264;第14部分定義了一種檔案打包格式,叫mp4;第3部分定義了一種音頻格式,叫AAC。
因為視頻編碼包含很多種功能,有些進階的功能不一定所有的裝置都支援,所以每種格式按照具體實現功能的多少又劃分成幾種功能組合(Profile),從簡單到複雜。例如MPEG-4 Video包括了Simple Profile, Advanced Simple Profile等,而H.264包括了Baseline Profile, Main Profile, High Profile等等。每種裝置會選擇一種適合自己能力的功能組合來實現。例如對於H.264的視頻播放,手機可能只支援Baseline Profile解碼,而電腦可能就會支援Main
Profile解碼。
因為各種裝置播放能力不同,所以每種Profile又分成從低到高的若干個層級(Level),層級越高,視頻允許的碼率越高,清晰度越高。
最後,關於iPhone支援的視頻格式
- iPhone支援 H.264視頻格式(320x240,Baseline Profile, 1.3 Level以下),AAC(Low Complexity Profile)音頻格式
- iPhone支援 H.264視頻格式(640x480,Baseline Profile的Low Complexity版本),AAC(Low Complexity Profile)音頻格式
- iPhone也支援MPEG-4 video視頻格式(Simple Profile),AAC(Low Complexity Profile)音頻格式
- iPhone支援.mp4, .m4v和.mov檔案打包格式,不支援.3gp
- 大多數Nokia手機也支援.mp4檔案,H.264視頻和AAC音頻,所以理論上,應該只需做一套視頻
一些比較好的視頻轉換工具
- 格式工廠:http://www.formatoz.com/CN_index.html
- handbrake: http://handbrake.fr/downloads.php