2013年11月14日 星期四

如何移動 MP4 "moov atom" 到檔案的開始部分

使用 RTSP 接收 H.264+ACC 的資料,並透過 ffmpeg 將此檔案寫入 MP4,此時 ffmpeg 會持續寫入 H.264 與 AAC 的資料,並在使用者停止寫入時,才將 MP4 的 moov atom 放在檔案結尾,此情況可能會造成某些撥放器無法正確撥放此 MP4。

若將 MP4 moov atom 移動到檔案開始部分,便可以解決此問題。

ffmpeg 提供了一個工具 qt-faststart 用來解決此問題。

以下簡單介紹其用法
編譯並安裝至系統目錄
   cd ffmpeg
   ./configure
   make tools/qt-faststart
   sudo cp tools/qt-faststart /usr/bin/
   $which qt-faststart
   /usr/bin/qt-faststart 
使用方式
   Usage: qt-faststart

 
Reference:

  1. http://www.ffmpeg.org/doxygen/1.0/qt-faststart_8c-source.html
  2. http://stackoverflow.com/questions/8061798/post-processing-in-ffmpeg-to-move-moov-atom-in-mp4-files-qt-faststart
  3. MP4 Reader