1
我開始處理ffmpeg API(不是命令提示符)來構建一個電影編輯器,並且我試圖找到一個關於如何從視頻中提取關鍵幀的好教程,但是我沒有找到它。ffmpeg代碼(API)
- 有人以前做過,可以在這裏寫代碼?
- 有人有關於ffmpeg API的很好的教程?
謝謝!
我開始處理ffmpeg API(不是命令提示符)來構建一個電影編輯器,並且我試圖找到一個關於如何從視頻中提取關鍵幀的好教程,但是我沒有找到它。ffmpeg代碼(API)
謝謝!
在你的多路分解循環,爲您在AVPacket::flags
的AV_PKT_FLAG_KEY
標誌調用av_read_frame()
你AVFormatContext
並確認讀取數據包是從輸入的正確流之後。例如:
AVPacket packet;
if (av_read_frame(pFormatCtx, &packet) < 0) {
break;
}
if (videoStream/* e.g. 0 or 1 */ == packet.stream_index) {
if (packet.flags & AV_PKT_FLAG_KEY) { //do something
需要注意的是,在我的經驗,你有時需要解碼到期望的幀之前2個關鍵幀,以產生良好的畫面。
查看ffmpeg發行版中的doc/examples
目錄中的某些API使用示例,例如, demuxing_decoding.c
。如果您勇敢並且/或者擁有良好的IDE,您也可以參考ffmpeg.c
(着名CLI的來源)。
如果您解碼N個幀並且沒有找到任何,請確保您停止查找關鍵幀。有很少編碼的電影只有一個關鍵幀,所以在查找前五個關鍵幀時,最終可能會看完整部電影。 –