gpt4 book ai didi

c++ - 如何旋转 AVFrame?

转载 作者:行者123 更新时间:2023-12-04 23:12:06 47 4
gpt4 key购买 nike

我正在编写一个使用 FFMPEG 的应用程序我需要一种方法来旋转 AVFrame s 为 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 需要很复杂。
“缓冲区”是一种进入图表的方式,用户可以将外部数据(帧)输入图表

and const AVFilter *buffersink = avfilter_get_by_name("buffersink");why do I even need those


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

Why do I need enum AVPixelFormat pix_fmts[] = { AV_PIX_FMT_GRAY8,AV_PIX_FMT_NONE};


有些过滤器只能对特定的像素格式进行操作,有些过滤器可以改变像素格式。所以格式输入可能不等于格式输出。设置像素格式可以在必要时提示图形转换格式。

关于c++ - 如何旋转 AVFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64463491/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com