m_AVIRec->WriteVideo(m_FrameIndex,m_pRecvedBuffer,m_lDataPos,TRUE);
m_FrameIndex++;
if (m_pFFMpeg->AVDecode(m_pRecvedBuffer, m_lDataPos, (BYTE **)&pBuff))
{
m_D3DRender.UpdateData(0, pBuff);
}
如上所示代码,WriteVideo把从视频终端传过来的数据保存到avi文件中,但是几秒钟的视频,也会被保存成十几分钟,而且开头是全绿的画面,视频文件占硬盘也很小,问题在哪呢?我初涉视频开发这一块

解决方案 »

  1.   

    我用RTP实时传输协议,利用UDP取得视频服务器压缩后传到我客户端的数据,无论是用xvid还是ffmpeg压缩和解压mpeg4编码格式的数据,几秒钟的录像都会被存为几十分钟的avi文件,我保存的是压缩的数据,是#define YUY2_BUFFER_SIZE (720*576*2)大小的而不是解压后的RGB格式的#define RGB_BUFFER_SIZE (720*576*3)大小,难道是关键帧的问题吗?我把视频服务器传过来每一帧的保存都是用关键帧作为保存的,而且我也不知道该如何判断关键帧,刚我试过了,把他们都作为非关键帧来保存,还是保存成时间延长了的录像,高手给看看吧