ffmpeg程序员使用lib Swscale做什么?
最佳答案
Swscale主要用于播放器,而不用于编码/解码。如果您要以与编码时不同的像素大小/纵横比显示视频,并且不支持硬件视频缩放,则很有必要。 Swscale还执行各种RGB和YUV颜色格式之间的色彩空间转换,以及打包(单个 channel 中的所有 channel )和平面(每个 channel 都有自己的缓冲区)格式之间的转换。所有这些例程都经过高度优化。据我所知,至少在x86和x86_64上,它们中的任何一个都没有更快的软件实现。
如果源视频尚未达到编码器所需的格式,则可能还需要Swscale对视频进行编码。例如,如果您的源视频是RGB,则可能需要将其转换为适当的YUV平面格式,因为大多数编解码器都可以在YUV上工作。这需要同时进行色彩空间转换(R,G,B vector 的仿射变换)和实际缩放(重采样),因为大多数YUV格式使用的是U和V平面(颜色平面),而不是Y平面(亮度,即强度数据)。