一般我們所說的影片檔案格式,像 .mp4 、.avi 、.mkv 、.wmv...,它們都是“容器”,也就是說,它是用來放影像和聲音的,而影像是用什麼編碼的,或聲音是用什麼編碼的,那就看你怎麼搭配(當然,這是理論上的說法,最主要還是得看規格怎麼定),要符合它們所定的格式,對映的播放器才知道怎麼播。所以,有些播放器不能看,就是這個原因,因為它根本就不了解別的容器的意義。如果只是因為沒有安裝需要的解碼器,那還有機會可以看,只要為它安裝就行了,它和不了解容器規格的原因不同,它只是少了那個解碼器。
MP4v2 就是一個製作 .mp4 檔案格式的函式庫,你可以從這裡了解更多關於它。要怎麼利用它,來產生 .mp4,我是利用Google來找到一些範例,它主要的流程為:
建立 MP4 file 框架 ->
加入 Video/Audio Track ->
設定相關的參數 ->
寫入 Video/Audio Samples
以程式的方式表示,就會是以下的流程:(可參考 使用mp4v2将H264+AAC合成mp4文件)
MP4CreateEx ->
MP4AddH264VideoTrack ->
MP4AddAudioTrack ->
MP4SetVideoProfileLevel ->
MP4SetAudioProfileLevel ->
MP4WriteSample ->
MP4Close
注意這裡的例子是包括影像和聲音的,所以 MP4WriteSample 是兩者都要處理。另外,有關影音同步也是一門學問,這裡就先不提,我想說的是另一件事,「要怎麼檢查你做出來的 MP4 檔案是否正確?」你當然可以直接用有支援 mp4 檔案格式的播放器直接測試看看,但是如果不能播的時候你該怎麼偵錯呢?
以下是我使用的方法:
1.利用mp4v2 library 裡的工具
2.Linux 的工具:mediainfo
沒有留言:
張貼留言