【问题标题】:Resize video using FFmpeg C API使用 FFmpeg C API 调整视频大小
【发布时间】:2012-02-29 05:34:30
【问题描述】:

我正在尝试使用 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 调整视频文件的大小?

【问题讨论】:

  • 如果你愿意的话,你可以只使用带有 exec 的 ffmpeg 可执行文件...
  • 我不能将 FFmpeg 用作二进制文件 - 在我的情况下,它应该用作共享库(只能访问 FFmpeg C API)。
  • 嘿,你做到了吗?你能过去一些代码吗?

标签: android c api ffmpeg


【解决方案1】:

据我所知,sws_scale() 是使用最新 FFmpeg 版本执行此操作的方法。尽管有准备SwsContext 之类的额外步骤,但它并不难使用,并且有示例,例如您引用的网站上的教程。

旧版本还有一个img_convert() 函数,它使用起来更简单一些,有一段时间它仍在库中,但不在通常的标题中——如果你提供自己的原型,它仍然有效(取自旧版本)。如果你愿意的话,这可能仍然有效——尽管我还没有尝试过最新版本。不过,使用sws_scale() 可能更安全、更好。

也可以在 FFmpeg 库之外处理缩放,但在这种情况下,它可能比它的价值更麻烦。库的 Doxygen 文档很好地描述了 AVPicture 结构,可以直接使用它,或者将图像传输到/从其他某种形式。主要困难是确保您可以使用或转换所使用的颜色/像素格式 - 如果您必须将其转换为另一种格式,您应该使用 sws_scale() 至少那么多,如果不是调整大小也是如此。

【讨论】:

    猜你喜欢
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 2018-10-22
    • 2018-10-04
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多