如果有兴趣可以用自己的视频序列 (YV12格式) 验证一下 CUDA 5 samples 下面的 cudaEncode
就会发现编出来的视频颜色不对,看上去像是 UV 分量颠倒了
(可以参考cudaEncode\data下的plush_480p_60fr.yuv ,感觉色彩很怪异)
楼主您好。
因为不懂此例子,只是简单的看了下代码。
此例子接受一个format的可选参数,不知道楼主您是否设置正确了。
例如指定:-format=YV12
例如指定:-format=IYUV
等等
此部分处理在代码中的pParams->iSurfaceFormat的设置部分。
仅供参考。
感谢您的莅临!
祝您假日愉快!
附上此例子的对此相关的命令行选项处理部分,供您参考:
if (checkCmdLineFlag(argc, (const char **)argv, “format”))
{
char *format = NULL;
getCmdLineArgumentString(argc, (const char **)argv, “format”, &format);
printf("YUV Surface Format: ");
if (!STRCASECMP(format, “UYVY”))
{
pParams->iSurfaceFormat = (int)UYVY;
}
else if (!STRCASECMP(format, “YUY2”))
{
pParams->iSurfaceFormat = (int)YUY2;
}
else if (!STRCASECMP(format, “YV12”))
{
pParams->iSurfaceFormat = (int)YV12;
}
else if (!STRCASECMP(format, “NV12”))
{
pParams->iSurfaceFormat = (int)NV12;
}
else if (!STRCASECMP(format, “IYUV”))
{
pParams->iSurfaceFormat = (int)IYUV;
}
printf(“%s\n”, sSurfaceFormat[pParams->iSurfaceFormat]);
}
谢谢 横扫千军
应该不是参数设置的问题, 通常H264 采用YV12 的视频序列作为编码输入
我用cuda 5 samples 中 cudaEncode 自带的 配置文件 来编我的视频序列,
在playback时就可以发现颜色不对
我只是建议您尝试一下参数。您可以考虑当然也可以不考虑此建议。
希望其他会员/版主能够提供更好的建议。
感谢您的莅临。
绝对是参数设置问题
YV12和IYUV都是4:2:0的planar格式,区别就是UV分量的顺序
YV12是V在前U在后,IYUV是U在前V在后