在線視頻,迎接MP4——制作Flash Player支持的H.264視頻格式2010-11-13 14:04
轉(zhuǎn)載自
web5iy最終編輯
web5iyFlash Player 9.0.115發(fā)布了,這是一個支持H.264的正式版本。關(guān)于H.264,已經(jīng)說得太多,播放H.264的視頻也很簡單,用NetStream即可(也就是播放FLV的那一套,想了解的可以看
這篇官方提供的教程),但是怎么把現(xiàn)有的視頻壓縮成Flash Player支持的H.264格式呢?
首先,要了解Flash Player 9.0.115對視頻編碼到底支持到哪個程度。
下面是Adobe官方提供的一個Flash Player支持的視頻編碼列表(
原文):
視頻編碼 SWF 文件格式版本(發(fā)布的版本) 支持播放的最小Flash Player版本
Sorenson Spark 6 6
On2 VP6 6 8
H.264 (MPEG-4 Part 10) 9 9.0.115.0*
音頻編碼 SWF 文件格式版本(發(fā)布的版本) 支持播放的最小Flash Player版本
ADPCM 6 6
MP3 6 6
HE-AAC (MPEG-4 Part 3) 9 9.0.115.0*
*Flash Player 可以播放視頻編碼為H.264,音頻編碼為AAC的標(biāo)準(zhǔn)MPEG-4文件。文件的擴展名可以是:F4V, MP4, M4A, MOV, MP4V, 3GP, 3G2等等。
注意:如果沒有特別說明,下面的Flash Player都指Flash Player 9(v 9.0.115.0)
Flash Player 9 (v 9.0.115.0) 支持下面的 MPEG-4 標(biāo)準(zhǔn)的子集:
MPEG-4 標(biāo)準(zhǔn) Flash Player Update 3
ISO/IEC 14496-3 (Audio AAC) AAC Main; AAC LC; SBR
ISO/IEC 14496-10 (Video AVC) Base (BP); Main (MP); High (HiP). All levels are supported.
ISO/IEC 14496-12 (Container) 1 Audio track; 1 Video track
3GPP TS 26.245 (Timed text format) Full support.
那么,什么是H.264?“MPEG4 Part 10”是什么?它和“Part 3”、“Part 2” 有什么關(guān)系?可以看
這篇文章。
簡單的講,H.264、MPEG4 Part 10、MPEG4 AVC和ISO/IEC 14496-10 都是一個東東,就是一種視頻編碼格式,同時也是高清電影采用的視頻編碼格式之一(另外兩種是MPEG2和VC-1)。
而平常我們熟悉的DivX以及XviD編碼,都屬于MPEG4標(biāo)準(zhǔn)的范疇,但它們屬于MPEG4 Part 2,F(xiàn)lash Player是不支持它們的。
了解了基礎(chǔ)知識之后,我們首先需要找到一個編碼工具。
選擇一個優(yōu)秀的壓縮工具至關(guān)重要。Flash CS3自帶的用于壓縮FLV的壓縮器自然是無法勝任了。可是網(wǎng)上的視頻轉(zhuǎn)換工具多如牛毛,要找一款好用的真的很難。本著“免費、易用、專業(yè)、通吃”這四個標(biāo)準(zhǔn),經(jīng)過大量測試,終于找到一款優(yōu)秀的國產(chǎn)編碼軟件
MediaCoder(中文名:影音轉(zhuǎn)碼寶盒),以下是來自MediaCoder官方網(wǎng)站的介紹:
MediaCoder是一個免費的通用音頻/視頻批量轉(zhuǎn)碼工具,它將眾多來自開源社區(qū)的優(yōu)秀音頻視頻編解碼器和工具整合為一個通用的解決方案,可以將音頻、視頻文件在各種格式之間進(jìn)行轉(zhuǎn)換。
功能和特點
基于優(yōu)秀的眾多的開源編解碼后臺,能夠解碼和編碼的格式多 極為豐富的可調(diào)整的編碼參數(shù) 全部編解碼器自帶,不依賴于系統(tǒng)的編解碼器和任何組件 良好的可擴展的程序架構(gòu),快速適應(yīng)新的需求,不斷增加新的格式的支持 利用腳本語言擴展的界面,有支持眾多影音設(shè)備(如
PSP、
iPod)的專用界面 高性能,特別在雙核處理器上表現(xiàn)優(yōu)異
典型應(yīng)用
提高影音文件壓縮率,減小其文件尺寸 轉(zhuǎn)換至可在各種影音設(shè)備上播放的影音文件,如MP3播放器、MP4播放器、手機、PDA、VCD/DVD播放機 提取視頻文件中的音軌并轉(zhuǎn)換成MP3、AAC、WMA等音頻文件 修復(fù)和改善一些損壞的、部分下載的或質(zhì)量不佳的影音文件
支持格式
MP3,
Vorbis,
AAC,
AAC+,
AAC+v2,
MusePack,
Speex,
AMR,
WMA,
RealAudio,
mp3PRO*
FLAC,
WavPack,
Monkey’s Audio,
OptimFrog,
AAC Lossless,
WMA Lossless,
WAV/PCMH.264,
Xvid,
MPEG1/
2/
4,
Theora,
Flash Video,
Dirac,
3ivx*,
RealVideo*,
Windows Media VideoAVI,
MPEG/
VOB,
Matroska,
MP4,
RealMedia*,
ASF,
Quicktime*,
OGM*
CD,
VCD,
DVD,
CUE Sheet*
*僅支持輸入
編碼工具搞定,接著就可以“制作”影片了。
我采用的源片是著名的Backkom Assa Game Contest片段,片源編碼如下:
G:\Movie\Backkom\Assa Game Contest.wmv
General
Complete name : G:\Movie\Backkom\Assa Game Contest.wmv
Format : Windows Media
File size : 1.89 MiB
PlayTime : 33s 991ms
Bit rate : 467 Kbps
Movie name : Assa
Performer : Aaron Lim
Copyright : rg animation studios
Comment : rg animation studios
Video
Codec : WMV3
Codec/Info : Windows Media Video 9
Bit rate : 408 Kbps
Width : 320 pixels
Height : 240 pixels
Aspect ratio : 4/3
Audio
Codec : WMA2
Codec/Info : Windows Media Audio 2
Bit rate : 48 Kbps
Channel(s) : 2 channels
Sampling rate : 44 KHz
在壓縮前,最重要的就是在MediaCoder中選擇視頻編碼和音頻編碼。根據(jù)上面的表格我們知道,F(xiàn)lash Player 9.0.115支持H.264視頻編碼和HE-AAC音頻編碼。下圖是我在MediaCoder中的設(shè)置。
H.264視頻設(shè)置
HE-AAC音頻設(shè)置
視頻大小設(shè)置
將這三個設(shè)置調(diào)整好即可。H.264的編碼優(yōu)于WMV9,所以在壓縮的時候,選擇的視頻和音頻碼率都小于源文件的碼率。
轉(zhuǎn)換完后的視頻擴展名為MP4,詳細(xì)編碼信息如下:
G:\Movie\Backkom\Assa Game Contest.mp4
General
Complete name : G:\Movie\Backkom\Assa Game Contest.mp4
Format : MPEG-4
Format/Info : ISO 14496-1 Base Media
Format/Family : MPEG-4
File size : 1.40 MiB
PlayTime : 33s 920ms
Bit rate : 347 Kbps
StreamSize : 11.2 KiB
Encoded date : UTC 2007-12-06 15:51:38
Tagged date : UTC 2007-12-06 15:51:38
Video #1
Codec : H.264
Codec/Info : H.264 (3GPP)
PlayTime : 33s 920ms
Bit rate : 314 Kbps
Width : 320 pixels
Height : 240 pixels
Aspect ratio : 4/3
Frame rate : 25.000 fps
Bits/(Pixel*Frame) : 0.160
StreamSize : 1.27 MiB
Encoded date : UTC 2007-12-06 15:51:38
Tagged date : UTC 2007-12-06 15:51:38
Audio #2
Codec : AAC LC-SBR
Codec/Info : AAC Low Complexity with Spectral Band Replication
PlayTime : 32s 415ms
Bit rate : 32 Kbps
Bit rate mode : VBR
Channel(s) : 2 channels
Sampling rate : 44 KHz
Resolution : 16 bits
StreamSize : 126 KiB
Encoded date : UTC 2007-12-06 15:51:38
Tagged date : UTC 2007-12-06 15:51:38
此視頻在Flash Player 9.0.115中順利播放,聲音也沒有問題。
研究一下視頻和音頻的組合
到 了這里,就有一些問題了。H.264視頻是否一定要搭配AAC音頻呢?搭配MP3行么?我壓縮了一個采用H.264視頻編碼,Mp3音頻編碼(采 用LAME MP3)的影片,用終極解碼播放正常,但是在Flash Player中,只有圖像可以顯示,卻聽不到聲音。下面是這個文件的編碼信息:
F:\Material\Flash Platform\Flash\Cases\播放H.264視頻\333.mp4
General
Complete name : F:\Material\Flash Platform\Flash\Cases\播放H.264視頻\333.mp4
Format : MPEG-4
Format/Info : ISO 14496-1 Base Media
Format/Family : MPEG-4
File size : 2.59 MiB
PlayTime : 33s 920ms
Bit rate : 641 Kbps
StreamSize : 13.9 KiB
Encoded date : UTC 2007-12-05 09:21:21
Tagged date : UTC 2007-12-05 09:21:21
Video #1
Codec : H.264
Codec/Info : H.264 (3GPP)
PlayTime : 33s 920ms
Bit rate : 516 Kbps
Width : 320 pixels
Height : 240 pixels
Aspect ratio : 4/3
Frame rate : 25.000 fps
Bits/(Pixel*Frame) : 0.260
StreamSize : 2.09 MiB
Encoded date : UTC 2007-12-05 09:21:21
Tagged date : UTC 2007-12-05 09:21:21
Audio #2
Codec : MPEG-1 Audio
PlayTime : 32s 365ms
Bit rate : 128 Kbps
Bit rate mode : CBR
Channel(s) : 2 channels
Sampling rate : 44 KHz
Resolution : 16 bits
StreamSize : 506 KiB
Encoded date : UTC 2007-12-05 09:21:21
Tagged date : UTC 2007-12-05 09:21:21
又測試了H.264+MP3用AVI封裝和3GP封裝,在Flash Player中都無法播放聲音。看來只有H.264+AAC可以被Flash Player支持。封裝可以使用3GP或者M(jìn)P4,但不支持MKV封裝。
關(guān)于封裝容器和視頻文件后綴
我們知道,我們不能僅僅從視頻文件的擴展名判斷文件的編碼。因為很多擴展名是支持多種編碼的。例如AVI就只是一種封裝容器,它里面的視頻和音頻編碼可以有很多種組合??梢允荄ivX,也可以是XviD,還可以是MPEG-1。下面的表格(
表格來源,ZRong做部分調(diào)整)簡單的描述了幾種封裝容器和視頻、音頻編碼的對應(yīng)情況:
封裝容器 視頻流編碼格式 音頻流編碼格式 Flash Player是否支持
AVI Xvid MP3 不支持
AVI Divx MP3 不支持
MKV Xvid MP3 不支持
MKV Xvid AAC 不支持
MKV H.264 AAC 不支持
MP4 H.264 AAC 支持
3GP H.263 AAC 不支持
3GP H.264 AAC 支持
FLV Sorenson Spark MP3 支持
FLV On2 VP6 MP3 支持
從上表可以看出,要讓Flash Player成功播放H.264視頻,最好采用3GP或者M(jìn)P4封裝容器。
AAC編碼的混亂情況
上面的壓縮,AAC編碼器使用的都是Nero Encoder,其中“規(guī)格”有這樣幾個選項:Auto、LC-AAC、LE-AAC和HE-AAC v2。經(jīng)過測試,這幾個規(guī)格壓縮的音頻都可以被Flash Player支持。
|
Nero Encoder的選項
如果采用CT AAC+編碼器,選項就變成了下面這樣,更加復(fù)雜了。經(jīng)過測試,這幾個選項的組合也都可以被Flash Player支持。不論選擇MPEG-4 AAC還是MPEG-2 AAC,都沒有問題。
CT AAC+的選項
如果采用FAAC編碼器,選項就變成了下面這樣。經(jīng)過測試,這幾個選項的組合也都可以被Flash Player支持,MPEG版本的選擇也沒有關(guān)系。
FAAC的選項
事 實上,NERO Encoder和CT AAC+中的LC-AAC,就是FAAC中的Low Complexity(無長時預(yù)測的AAC);而NERO Encoder中的HE-AAC,就是CT AAC+中的aacPlus,它加了SBR(spectral band replication),HE代表high efficiency。這也是為什么前面壓縮WMV視頻的時候,選擇的是HE-AAC編碼,在編碼之后的文件信息里面顯示的卻是下面這些內(nèi)容的原因了:
Codec : AAC LC-SBR
Codec/Info : AAC Low Complexity with Spectral Band Replication
根據(jù)Adobe公布的信息,F(xiàn)lash Player支持這些AAC編碼:AAC Main; AAC LC; SBR ,因此,我一般選擇使用NERO Encoder的HE-AAC。
參考鏈接
http://bbs.lmtw.com/dispbbs.asp?boardID=111&ID=141583&page=1http://mediacoder.sourceforge.net/index_zh.htmhttp://www.sxzkw.com/1Qm/MediaCoder_jiaocheng_cn.swfhttp://www.adobe.com/devnet/flashplayer/articles/http://www.adobe.com/devnet/flashplayer/articles/hd_video_flash_player.htmlhttp://tech.163.com/05/0624/11/1N0Q0HJ800091589.htmlhttp://kb.adobe.com/selfservice/viewContent.do?externalId=kb402866&sliceId=1