RT
本人用VFW API写的,编解码库采用微软的mpg4c32.dll,部分代码如下:
//初始化编码
BOOL CSkySunDlg::InitVideoEncoder()
{
m_hicEnc = ICOpen(ICTYPE_VIDEO, m_dwCompressor, ICMODE_FASTCOMPRESS);
if(!m_hicEnc)
{
AfxMessageBox("ICOpen Enc Error!");
return false;
}
m_biEncInput.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
m_biEncInput.bmiHeader.biCompression = BI_RGB;
m_biEncInput.bmiHeader.biWidth = QCIF_WIDTH;
m_biEncInput.bmiHeader.biHeight = QCIF_HEIGHT;
m_biEncInput.bmiHeader.biPlanes = 1;
m_biEncInput.bmiHeader.biBitCount = 24;
m_biEncInput.bmiHeader.biSizeImage = QCIF_WIDTH*QCIF_HEIGHT*1*(24/8);
m_biEncInput.bmiHeader.biXPelsPerMeter = 0;
m_biEncInput.bmiHeader.biYPelsPerMeter = 0;
m_biEncInput.bmiHeader.biClrUsed = 0;
m_biEncInput.bmiHeader.biClrImportant = 0;
m_biEncOutput.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
m_biEncOutput.bmiHeader.biCompression = mmioFOURCC('M','P','4','3');
m_biEncOutput.bmiHeader.biWidth = QCIF_WIDTH;
m_biEncOutput.bmiHeader.biHeight = QCIF_HEIGHT;
m_biEncOutput.bmiHeader.biPlanes = 1;
m_biEncOutput.bmiHeader.biBitCount = 24;
m_biEncOutput.bmiHeader.biSizeImage = QCIF_WIDTH*QCIF_HEIGHT*1*(24/8);
m_biEncOutput.bmiHeader.biXPelsPerMeter = 0;
m_biEncOutput.bmiHeader.biYPelsPerMeter = 0;
m_biEncOutput.bmiHeader.biClrUsed = 0;
m_biEncOutput.bmiHeader.biClrImportant = 0;
if( ICERR_OK != ICCompressBegin(m_hicEnc, &m_biEncInput, &m_biEncOutput) )
采集视频后在本地直接进行编码、解码(不进行网传),为什么显示出来有大量马赛克
最新推荐文章于 2024-08-25 16:03:11 发布
博主在本地使用VFW API和mpg4c32.dll进行视频编码解码时遇到大量马赛克问题。经过讨论,可能的原因包括:编码解码过程中的错误、解码后数据缓冲区大小不正确、压缩比特率过低、编码后的数据与预期不符。建议检查编解码算法、数据缓冲区大小和比特率设置。
摘要由CSDN通过智能技术生成