【发布时间】:2013-09-23 13:00:59
【问题描述】:
我在this 教程的帮助下编写了一些代码,并使用了最新的 ffmpeg 和 SDL 开发库。我被困在必须在屏幕上显示解码帧(AVFrame)的地方。我倾向于使用 SDL 2.0 的最新 API(在使用 SDL_Window 的同时使用渲染器和纹理)来完成上述任务即,在屏幕上显示 AVFrame。坦率地说,我不是 SDL_Renderer、SDL_Texture 及其相关函数的专家。但我正在阅读 SDL 2.0 官方网站上的文档并逐步完成它们。
有没有办法使用 SDL 2.0 API 执行以下操作:
-
将原生帧格式转换为 YUV 风格并显示出来。
(或)
如果可能,显示框架而无需将其从原始格式转换。
我想使用渲染器和纹理来完成上述操作。似乎没有一种简单的方法可以与他们合作。
谁能指导我完成上述任务的步骤?
PS:虽然我没有明确尝试过,但我遇到了一些通过将 AVFrame 格式(本机)转换为 RGB 来在屏幕上显示 AVFrame 的方法。但我不希望将原生帧格式(主要是 YUV)转换为 RGB,因为它的计算成本很高。
格式之间的转换由 sws_scale() 完成
【问题讨论】:
-
您或许可以在我的 YCbCr (YUV) 查看器中找到一些灵感,该查看器使用 SDL 显示了相当数量的 YUV 格式。 github.com/figgis/yuv-viewer
-
@Fredrik Pihl,感谢您的链接,但我想尽可能多地使用 SDL 2.0。
标签: ffmpeg sdl yuv libavformat video-player