繁体   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