2012-02-28 113 views
0

我正嘗試使用FFmpeg調整Android設備上的視頻文件大小。備註:我不能使用FFmpeg作爲二進制文件 - 在我的情況下它應該用作共享庫(只能訪問FFmpeg C API)。使用FFmpeg C API調整視頻大小

我沒有找到關於視頻大小調整的任何文件,但它看起來像算法如下:

10 OPEN video_stream FROM video.mp4 
20 READ packet FROM video_stream INTO frame 
30 IF frame NOT COMPLETE GOTO 20 
40 RESIZE frame 
50 WRITE frame TO converted_video.mp4 
60 GOTO 20 

我應該使用sws_scale功能,以調整框架?是否有任何其他(更簡單?)的方式來調整使用FFmpeg C API視頻文件?

+0

如果你想要的話,你可以使用ffmpeg可執行文件exec ... – 2012-02-28 20:35:45

+0

我不能使用FFmpeg作爲二進制 - 在我的情況下它應該用作共享庫(只有FFmpeg C API可以訪問)。 – 2012-02-28 20:40:14

+0

嘿,你設法做到了嗎?你可以通過一些代碼嗎? – shem 2013-02-20 17:41:48

回答

1

從我記得,sws_scale()是用最新的FFmpeg版本做到這一點。儘管準備一個SwsContext這樣的額外步驟並不難,但也有一些示例,例如您引用的網站上的教程。

舊版本也有一個img_convert()函數,它使用起來有點簡單,有一段時間它仍然在庫中,但沒有在通常的頭文件中 - 它仍然工作,如果你提供了你自己的原型(取自舊版本)。如果你願意偶然的話,這可能仍然有效 - 儘管我沒有用最新版本嘗試過。不過,使用sws_scale()可能會更安全。

也可以處理FFmpeg庫之外的擴展,但在這種情況下它可能比它的價值更麻煩。這些庫的Doxygen文檔描述了AVPicture結構足夠好,可以直接使用它,或將圖像傳輸到其他表單或從其他表單傳輸。主要困難在於確保您可以使用或轉換所使用的顏色/像素格式 - 如果您不得不將其轉換爲其他格式,則至少應該使用sws_scale(),如果不是調整大小的話。