微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何旋转AVFrame?

如何解决如何旋转AVFrame?

我正在编写一个使用FFMPEG的应用程序,我需要一种将AVFrame旋转90、180和270度的方法,因为相机的位置可能不同。我听说有做类似这样的事情的过滤器。我在示例目录中阅读了filtering_video.c文件,但实际上很难理解该示例中的情况。我看到了代码中的"transpose=cclock"部分,这暗示我需要它,但实际上并没有太多解释。

const AVFilter *buffersrc = avfilter_get_by_name("buffer");const AVFilter *buffersink = avfilter_get_by_name("buffersink");是什么,如果我只是想轮换,为什么我甚至需要这些东西?当我不想更改像素格式时,为什么需要enum AVPixelFormat pix_fmts[] = { AV_PIX_FMT_GRAY8,AV_PIX_FMT_NONE };

任何人都可以解释一下如何使FFMPEG旋转解码后的AVFrame吗?

解决方法

|什么是const AVFilter * buffersrc = avfilter_get_by_name(“ buffer”);

Ffmpeg筛选器API设计用于更复杂的用途。过滤器可以链接在一起形成一个“图形”,有些过滤器有多个输入,有些过滤器有多个输出。创建可以支持任何过滤器类型的API并在图形中创建指向任何其他可能的过滤器的链接,这意味着该API需要非常复杂。

“缓冲区”是进入图形的一种方式,用户可以在其中将外部数据(帧)输入到图形中

和const AVFilter * buffersink = avfilter_get_by_name(“ buffersink”); 为什么我什至需要那些

“缓冲池”是一种从图形中读取帧的方法。没有这些,就无法使用过滤器图。

为什么我需要枚举AVPixelFormat pix_fmts [] = {AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE};

某些滤镜只能在特定的像素格式上运行,而某些滤镜可以更改像素格式。因此,格式输入可能不等于格式输出。设置像素格式可以在必要时提示图形转换格式。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。