使用SDL+FFMPEG将视频绑定到指定窗口显示颜色失真
在学习使用SDL+FFMPEG来制作简易播放器时,发现将图像显示到指定窗口上时,颜色会出现失真情况,设置窗口大小代码如下:
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);
失真情况如下图所示
后来发现是调用SDL_SetVideoMode函数设置的窗口大小不是偶数的原因,加上如下代码即可
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);
看看效果图
你好,我用SDL和ffmpeg播放视频成功,但是不知道如何在MFC下面,把视频捅到窗口,能指教一下吗