LAV Filter 是否进行 YUV 到 RGB 转换
Does LAV Filter do the YUV to RGB conversion
我想改进使用 LAV 视频解码器的 MPC-HC 解码 H.264 视频流。
我将播放的流始终采用 yuvj444p 格式(电视级别 [0-255] 中的平面 YCbCr 4:4:4),使用 x264 编码。
我使用的是 MPC-HC 1.7.10 版和 LAV 视频解码器 0.68.1
我有一个 nVidia Quadro K5200,我知道如何编写 GLSL 着色器以 运行 YUV 到 RGB 转换。
我想知道这里是否有人可以给我提示是否值得做这样的工作,以及可能从哪里开始。
我应该自定义 EVR(增强型视频渲染器 - 自定义演示器)吗?
我应该只写一个内部着色器吗?
...
是,LAV Video Decoder滤镜支持yuvj444p到RGB32颜色转换。
为了证明这一点,我尝试了以下测试:
- 创建 RGB 颜色格式的未压缩 AVI 文件(使用 MATLAB)。
- 将 AVI 文件转换为 yuvj444p 颜色格式的 x264 压缩 MKV 文件(使用 FFMPEG)。
- 下一步在 Graph Studio 中构建一个过滤器图,使用 LAV 视频解码器 (DirectShow) 过滤器。
- 检查解码器滤波器的输出引脚。
- 播放图形,并将输出帧与原始输入帧进行比较。
输入AVI文件名:RGB_INPUT.avi
MKV 文件名:OUTPUT.mkv
我使用了带有以下参数的 ffmpeg(在命令行中):
ffmpeg -i RGB_INPUT.avi -pix_fmt yuvj444p -vf scale=w=0:h=0:out_color_matrix=bt709 -c:v libx264 -crf 18 -x264opts colorprim=bt709:transfer=bt709:colormatrix=bt709 -an OUTPUT.mkv
我从这里拿了例子:http://forum.doom9.org/showthread.php?p=1671195
过滤图:
查看LAV Video Decoder的输出pin,输出颜色格式为RGB32(媒体子类型为:MEDIASUBTYPE_RGB32
):
将未压缩的输入帧与解码的输出帧进行比较:
源帧(未压缩图像):
视频渲染器输出(截图):
绝对差图像(缩放10):
结论:LAV 视频解码器正确地将 yuvj444 转换为 RGB32。
我想改进使用 LAV 视频解码器的 MPC-HC 解码 H.264 视频流。 我将播放的流始终采用 yuvj444p 格式(电视级别 [0-255] 中的平面 YCbCr 4:4:4),使用 x264 编码。
我使用的是 MPC-HC 1.7.10 版和 LAV 视频解码器 0.68.1 我有一个 nVidia Quadro K5200,我知道如何编写 GLSL 着色器以 运行 YUV 到 RGB 转换。
我想知道这里是否有人可以给我提示是否值得做这样的工作,以及可能从哪里开始。
我应该自定义 EVR(增强型视频渲染器 - 自定义演示器)吗?
我应该只写一个内部着色器吗?
...
是,LAV Video Decoder滤镜支持yuvj444p到RGB32颜色转换。
为了证明这一点,我尝试了以下测试:
- 创建 RGB 颜色格式的未压缩 AVI 文件(使用 MATLAB)。
- 将 AVI 文件转换为 yuvj444p 颜色格式的 x264 压缩 MKV 文件(使用 FFMPEG)。
- 下一步在 Graph Studio 中构建一个过滤器图,使用 LAV 视频解码器 (DirectShow) 过滤器。
- 检查解码器滤波器的输出引脚。
- 播放图形,并将输出帧与原始输入帧进行比较。
输入AVI文件名:RGB_INPUT.avi
MKV 文件名:OUTPUT.mkv
我使用了带有以下参数的 ffmpeg(在命令行中):
ffmpeg -i RGB_INPUT.avi -pix_fmt yuvj444p -vf scale=w=0:h=0:out_color_matrix=bt709 -c:v libx264 -crf 18 -x264opts colorprim=bt709:transfer=bt709:colormatrix=bt709 -an OUTPUT.mkv
我从这里拿了例子:http://forum.doom9.org/showthread.php?p=1671195
过滤图:
查看LAV Video Decoder的输出pin,输出颜色格式为RGB32(媒体子类型为:MEDIASUBTYPE_RGB32
):
将未压缩的输入帧与解码的输出帧进行比较:
源帧(未压缩图像):
视频渲染器输出(截图):
绝对差图像(缩放10):
结论:LAV 视频解码器正确地将 yuvj444 转换为 RGB32。