【发布时间】:2026-01-09 21:25:01
【问题描述】:
我正在尝试通过ffmpeg在android中流式传输视频,解码后得到的输出是YUV格式。是否可以直接在Android屏幕上渲染YUV图像格式?
【问题讨论】:
标签: android android-ndk ffmpeg
我正在尝试通过ffmpeg在android中流式传输视频,解码后得到的输出是YUV格式。是否可以直接在Android屏幕上渲染YUV图像格式?
【问题讨论】:
标签: android android-ndk ffmpeg
是和不是。
摄像头和硬件视频解码器的输出一般是YUV。来自这些来源的帧通常直接发送到显示器。它们可以由驱动程序转换,通常使用硬件缩放器和格式转换器。这是提高效率所必需的。
没有允许应用以相同方式传递 YUV 帧的 API。基本问题是“YUV”涵盖了很多领域。视频解码器使用的缓冲区格式可能是各种硬件模块可以高效处理的专有内部格式;为了让您的应用以这种格式创建表面,它必须执行转换,而您又回到了性能方面。
您应该能够在前往显示器的途中使用 GLES2 着色器为您进行转换,但我没有指向演示此操作的代码的指针。
更新:this question 的答案有一个指向 WebRTC source file 的链接,该链接演示了在 GLES2 着色器中进行 YUV 转换。
【讨论】: