簡體   English   中英

使用FFmpeg C API調整視頻大小

[英]Resize video using FFmpeg C API

我正在嘗試使用FFmpeg在Android設備上調整視頻文件的大小。 備注:我不能將FFmpeg用作二進制文件-在我的情況下,應將其用作共享庫(只能訪問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調整視頻文件大小的方法嗎?

我記得, sws_scale()是使用最新的FFmpeg版本執行此操作的方式。 盡管准備了SwsContext這樣的額外步驟並不難,但是在您引用的站點上還是有一些示例,例如教程。

較舊的版本還具有img_convert()函數,該函數使用起來更簡單,並且有一段時間仍在庫中,但不在通常的頭文件中-如果您提供自己的原型(從較舊的版本中獲取),它仍然可以工作)。 如果您願意嘗試,這可能仍然有效-盡管我還沒有嘗試使用最新版本。 不過,使用sws_scale()可能更安全更好。

也可以在FFmpeg庫之外處理擴展,但是在這種情況下,這可能比值得的麻煩更多。 庫的Doxygen文檔很好地描述了AVPicture結構,可以直接使用它,也可以將圖像與其他形式進行傳輸。 主要困難在於確保可以使用或轉換所使用的顏色/像素格式-如果必須將其轉換為另一種格式,則應至少使用sws_scale()進行調整,如果不能調整大小的話。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM