QuickTime的文檔推薦以下方法來找到一個關鍵幀關鍵幀:發現在MDAT
找到一個關鍵幀
發現在電影中的特定時間的關鍵幀稍微 複雜比在指定時間內找到一個樣本。介質 處理程序必須將同步採樣原子和時間到採樣原子結合在一起才能找到關鍵幀。
媒體處理程序執行以下步驟:
- 檢查時間 - 樣本原子,以確定包含在指定的時間中的數據的樣本數。
- 掃描同步樣本原子以找到在步驟1中選擇的樣本編號之前的關鍵幀。
- 掃描樣本到塊原子以發現哪個塊包含關鍵幀。
- 從塊偏移原子中提取塊的偏移量。
- 使用樣本大小原子查找塊內的偏移量和樣本大小。
源:https://developer.apple.com/library/mac/documentation/QuickTime/qtff/QTFFChap2/qtff2.html
這是相當混亂的,因爲多個軌道( 「TRAK」 原子)將產生不同的偏移量。例如,視頻trak的keyframe-sample-chunk-offset值將是一個值,音頻將是另一個值。
如何將上述指令轉換爲文件(或mdat atom)中的某個位置?
感謝rolf-雖然視頻trak中的樣本的關鍵幀將匹配iframe(使用ffprobe,例如,找到它)? – davidkomer