2014-02-17 63 views
0

QuickTime的文檔推薦以下方法來找到一個關鍵幀關鍵幀:發現在MDAT

找到一個關鍵幀

發現在電影中的特定時間的關鍵幀稍微 複雜比在指定時間內找到一個樣本。介質 處理程序必須將同步採樣原子和時間到採樣原子結合在一起才能找到關鍵幀。

媒體處理程序執行以下步驟:

  1. 檢查時間 - 樣本原子,以確定包含在指定的時間中的數據的樣本數。
  2. 掃描同步樣本原子以找到在步驟1中選擇的樣本編號之前的關鍵幀。
  3. 掃描樣本到塊原子以發現哪個塊包含關鍵幀。
  4. 從塊偏移原子中提取塊的偏移量。
  5. 使用樣本大小原子查找塊內的偏移量和樣本大小。

源:https://developer.apple.com/library/mac/documentation/QuickTime/qtff/QTFFChap2/qtff2.html

這是相當混亂的,因爲多個軌道( 「TRAK」 原子)將產生不同的偏移量。例如,視頻trak的keyframe-sample-chunk-offset值將是一個值,音頻將是另一個值。

如何將上述指令轉換爲文件(或mdat atom)中的某個位置?

回答

0

這不限於關鍵幀。通常不能保證文件中不同軌道的樣本彼此接近。您希望音頻和視頻將被交織,以便您可以播放電影而無需過多搜索,但這取決於創建該文件的軟件。每個軌道都有自己的樣本表和塊原子,可以告訴您樣本在文件中的位置,並且可以在任何位置。 (他們甚至可以在不同的文件,雖然現在參考電影已棄用,所以你可以忽略它們。)

+0

感謝rolf-雖然視頻trak中的樣本的關鍵幀將匹配iframe(使用ffprobe,例如,找到它)? – davidkomer