如何使用ffmpeg的sws_scale()调整图片大小?

2024-01-11

我想使用 ffmpeg 的 func--->sws_scale() 来调整图片大小。

有谁知道该怎么做吗?

有这个函数的源码吗?


首先你需要创建一个SwsContext(您只需执行一次):

struct SwsContext *resize;
resize = sws_getContext(width1, height1, AV_PIX_FMT_YUV420P, width2, height2, PIX_FMT_RGB24, SWS_BICUBIC, NULL, NULL, NULL);

您需要两个帧进行转换,frame1是原始帧,您需要显式分配frame2:

AVFrame* frame1 = avcodec_alloc_frame(); // this is your original frame

AVFrame* frame2 = avcodec_alloc_frame();
int num_bytes = avpicture_get_size(AV_PIX_FMT_RGB24, width2, height2);
uint8_t* frame2_buffer = (uint8_t *)av_malloc(num_bytes*sizeof(uint8_t));
avpicture_fill((AVPicture*)frame2, frame2_buffer, AV_PIX_FMT_RGB24, width2, height2);

如果您需要调整收到的每个帧的大小,您可以在循环中使用此部分:

// frame1 should be filled by now (eg using avcodec_decode_video)
sws_scale(resize, frame1->data, frame1->linesize, 0, height1, frame2->data, frame2->linesize);

请注意,我还更改了像素格式,但您可以对两个帧使用相同的像素格式

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用ffmpeg的sws_scale()调整图片大小? 的相关文章

随机推荐

  • 指针数组

    我正在尝试实现一个指针数组 以便我可以循环遍历元素 但是我不确定如何正确执行此操作 TYPE domain POINTER d01 d02 d03 TYPE domain DIMENSION POINTER dom dom 1 gt d01
  • 使用 underscore.js findWhere 函数时如何使用变量作为属性名称?

    我在使用 findWhere 函数时无法弄清楚如何在 underscore js 中动态设置属性 这是该函数的文档 findWhere findWhere list properties 遍历列表并返回与所有匹配的第一个值 属性中列出的键值
  • 如何使用 iOS 和 Objective-C/Xcode 加速 TDD 流程

    一直在寻找 Objective C 和 iOS 开发的 TDD 经验 以前的post https stackoverflow com questions 3628906 anyone done an objective c xode ver
  • 多次按下排序按钮时排序表错误?

    我这里有问题 我创建程序将数据添加到表中 并在按下按钮时对其进行排序 当我按一次排序按钮时 它没有错 但当我再次按下时 它是错误的 所以为什么 请帮我 这是代码 纳玛级 public class Nama private String na
  • 具有图案和图像元素的 SVG 转换为 PNG 图像失败

    我试图将 Raphael js 生成的 svg 转换为 PNG 图像 好吧 当 svg 没有图案和图像组件时 我将 svg 转换为图像 然后 当我将这两个组件添加到 SVG 中时 就会出现问题并且转换失败 完整的小提琴是 here http
  • Ninject Kernel.Get 和构造函数注入之间的不同行为

    我有什么 public interface IBla public class Bla1 IBla public class Bla IBla public class Consumer private readonly IBla arra
  • 在 Dart 中使用“this”关键字是什么意思?

    如果这听起来像是一个极其愚蠢的问题 我很抱歉 但它确实一直困扰着我 什么是 这个 我看到了吗 每当我看到 flutter 中的文档时 我都会看到它被用于文档中的以下内容 this initialRoute this onGenerateRo
  • 如何给UIButton的按钮文本添加下划线?

    文本来自数据库 我想将它用作按钮并在按钮的文本下划线 我怎样才能做到这一点 在 iOS 6 中 NS属性字符串用于修改文本 您可以使用 NSMutableAttributedString 使用单个 UIButton 或 UILabel 进行
  • Internet Explorer 上使用大括号的 AngularJS 数据绑定问题

    我在这里做错了什么 我已经读过IE兼容性指南 http docs angularjs org guide ie但这没有提到使用 标签进行数据绑定 这在其他浏览器上工作正常 但在 IE 包括 IE9 中失败 http jsfiddle net
  • elm 中的类型继承

    我想要实现的是类型继承 我的意思是 我希望能够让函数返回 子类型 然后让函数返回 超类型 让我举一个例子 假设我有一个主视图组件 它返回一个 Html Msg view Model gt Html Msg view model div cl
  • Oracle 会淘汰 10gAS 转而采用 WebLogic 吗?

    Oracle 购买了 BEA 及其 WebLogic 工具套件 他们在自己的 10gAS 应用服务器中仍然有竞争产品 两者都是Java EE http en wikipedia org wiki Java Platform Enterpri
  • 如何以编程方式替换/更改图像按钮android

    我的视图上有一个图像按钮 我需要在用户交互后更改它 我没有找到类似的东西myImageButton setDrawable这是我想要更改的按钮的 xml
  • 如何使用 Gradle 创建发布签名的 apk 文件?

    我想让我的 Gradle 构建使用 Gradle 创建一个发布签名的 apk 文件 我不确定代码是否正确或者我在执行时是否缺少参数gradle build 这是我的一些代码build gradle build gradle kts file
  • 全二叉树的叶节点数

    Problem求一棵有 n 个节点的满二叉树的叶节点数 我为上述问题编写了一个递归程序 遍历树并在到达没有子节点的节点时增加叶节点的数量 但由于树是一个完整的二叉树 我认为这会让问题变得更容易 但我不知道如何解决 能否以紧凑的形式 类似于公
  • 如何确定我是否作为控制台应用程序运行? (Win32 上的德尔福)

    我有一个通用单元 可以将一些日志记录到 GExperts Debugger 和 或 OutputDebugString 我将在控制台应用程序中使用它 所以我希望它能够通过输出到标准输出writeln 主要可执行文件已经有 APPTYPE C
  • 如何将XAMPP中的phpMyAdmin升级到最新版本?

    如何在不影响数据库 设置和文件的情况下将XAMPP中的phpMyAdmin升级到最新版本 该网站将对您的目的有用 https www ostraining com blog coding update phpmyadmin https ww
  • 如何强制 Apache 使用最新安装的 PHP 版本

    我使用以下命令从 PHP 版本 5 5 9 1ubuntu4 17 升级到 PHP 5 6 23 1 deb sury org trusty 2 apt get y update add apt repository ppa ondrej
  • 如何使用包内 Excel 文件第一行中指定的列名称?

    谁能告诉我如何更改默认列名称 F1 F2 F3等 将数据从 Excel 源导入到 SSIS 2005 中的 OLEDB 目标时 示例 我的 Excel 电子表格中的数据如下所示 Title ProvinceID DistrictID Con
  • 调试 Windows 服务的更简单方法

    有没有比通过 Windows 服务控制管理器启动服务然后将调试器附加到线程更简单的方法来逐步执行代码 这有点麻烦 我想知道是否有更直接的方法 如果我想快速调试服务 我只需添加一个Debugger Break 在那里 当到达该线时 它会将我带
  • 如何使用ffmpeg的sws_scale()调整图片大小?

    我想使用 ffmpeg 的 func gt sws scale 来调整图片大小 有谁知道该怎么做吗 有这个函数的源码吗 首先你需要创建一个SwsContext 您只需执行一次 struct SwsContext resize resize