2012-07-11 40 views
3

我需要從視頻文件中提取元數據信息以及該文件的縮略圖。爲此,我嘗試了ffmpeg,並在標準輸出中看到元數據(例如持續時間,分辨率,編解碼器,創建時間等)。如果我需要使用這些,我應該解析stdout並提取我需要的元數據。ffmpeg vs mediainfo獲取縮略圖和元數據

我也讀過關於也提供元數據的MediaInfo工具。我不確定它是否可以提供縮略圖。我也知道MediaInfo不會在後臺使用ffmpeg。

我想知道是否有人對ffmpeg和MediaInfo有相關的工作知識,並且關於我上面提到的要求,是否有人可以建議哪個更適合。

兩者的內存佔用比較也會很大。

+0

在什麼情況下需要實現?在Bash腳本中,一個C程序,通過網絡? – 2012-07-11 07:28:32

+0

我打算通過C++代碼調用程序並分析結果輸出(例如在stdout中發出) – Spottsworth 2012-07-11 07:53:22

回答

2

正確答案既不是ffmpeg,也不是mediainfo。好吧,不是完整的可執行文件。

ffmpeg由一系列庫組成,包括libavformat,它允許您使用多媒體容器格式。 MartinBöhme的Using libavformat and libavcodec應該給你一個很好的介紹。

2

據我所知MediaInfo是開源的(see here),它的庫可以用於C++或C#的Windows環境(這是一個dll)。無需解析輸出。它有開發人員和一些樣本的文檔。

雖然我不認爲它可以提取縮略圖。

5

您應該直接使用底層庫,如其他答案中所示。

但是,爲了完整起見,應該堅持使用單獨的shell進程,不解析FFmpeg的輸出。相反,使用FFprobe這是一個鮮爲人知的工具,專門用來補充FFmpeg並簡化元數據提取。

而且,生成縮略圖可以與FFmpeg的做多或更少,像這樣:

ffmpeg [-ss 10] -i input.avi -vframes 1 -s 320x240 thumbnail.png 

調整大小品嚐和使用可選-ss參數從比的最開始的某點抓取的圖像視頻。

+1

是的。我早些時候檢查過ffprobe。但我會想象我將不得不回到ffmpeg進行縮略圖提取。從我迄今爲止收集的信息來看,ffmpeg似乎是大多數視頻/音頻操作的唯一過程。爲什麼我對ffprobe只用於元數據有點懷疑,我想確保我沒有吃太多的空間(我在MIPS嵌入式設備上使用這些空間)感謝您的輸入 – Spottsworth 2012-07-17 03:59:53

+0

樂意提供幫助。至少在我的安裝中,ffprobe/ffmpeg二進制文件與底層共享庫相比是相對較小的,因此包括ffprobe在內的代價可能不如您想像的那麼高。 – blahdiblah 2012-07-17 04:05:00