使用SDL+FFMPEG将视频绑定到指定窗口显示颜色失真
在学习使用SDL+FFMPEG来制作简易播放器时,发现将图像显示到指定窗口上时,颜色会出现失真情况,设置窗口大小代码如下:
[php]
RECT wrect;
GetWindowRect((HWND)m_hwnd, &wrect);
m_nWidth = wrect.right – wrect.left;
m_nHeight = wrect.bottom – wrect.top;
m_surface = SDL_SetVideoMode(m_nWidth, m_nHeight, 0, 0);
[/php]
失真情况如下图所示
后来发现是调用SDL_SetVideoMode函数设置的窗口大小不是偶数的原因,加上如下代码即可
[php]
RECT wrect;
GetWindowRect((HWND)m_hwnd, &wrect);
m_nWidth = wrect.right – wrect.left;
m_nHeight = wrect.bottom – wrect.top;
//需要保证图像的原始宽度和高度为偶数,保证UV数据拷贝不错位
if (m_nWidth % 2 != 0)
{
m_nWidth -= 1;
}
if (m_nHeight % 2 != 0)
{
m_nHeight -= 1;
}
m_surface = SDL_SetVideoMode(m_nWidth, m_nHeight, 0, 0);
[/php]
看看效果图
你好,我用SDL和ffmpeg播放视频成功,但是不知道如何在MFC下面,把视频捅到窗口,能指教一下吗