我需要使的每个插入的Bitmap(关键帧)的播放时间不一样,比如一个Bitmap播放2秒,第二个播放3秒。我目前写的代码是每个Bitmap播放的时间都是一样的。
下面是创建Stream的代码,其中的m_dwSPF是一帧所播放的时间,但是这个设置之后对所以之后插入的帧都使用这个值。不知如何处理? ZeroMemory(&m_AviStreamInfo,sizeof(AVISTREAMINFO));
m_AviStreamInfo.fccType=streamtypeVIDEO;
m_AviStreamInfo.fccHandler=mmioFOURCC('M','P','G','4');
m_AviStreamInfo.dwScale=m_dwSPF;
m_AviStreamInfo.dwRate=m_dwFPS; //15fps
m_AviStreamInfo.dwQuality=-1; //Default Quality(0~10000)
m_AviStreamInfo.dwSuggestedBufferSize=nMaxWidth*nMaxHeight*4;
SetRect(&m_AviStreamInfo.rcFrame,0,0,bmpInfo.bmiHeader.biWidth,bmpInfo.bmiHeader.biHeight);
if(FAILED(AVIFileCreateStream(m_pAviFile,&m_pAviStream,&m_AviStreamInfo)))
return false; ZeroMemory(&m_AviCompressOptions,sizeof(AVICOMPRESSOPTIONS));
m_AviCompressOptions.fccType=streamtypeVIDEO;
m_AviCompressOptions.fccHandler=m_AviStreamInfo.fccHandler;
m_AviCompressOptions.dwFlags=AVICOMPRESSF_KEYFRAMES|AVICOMPRESSF_VALID;//|AVICOMPRESSF_DATARATE;
m_AviCompressOptions.dwKeyFrameEvery=15;
//m_AviCompressOptions.dwBytesPerSecond=1000/8;
//m_AviCompressOptions.dwQuality=100; if(FAILED(AVIMakeCompressedStream(&m_pAviCompressedStream,m_pAviStream,&m_AviCompressOptions,NULL)))
return false; if(FAILED(AVIStreamSetFormat(m_pAviCompressedStream,0,(LPVOID)&bmpInfo,bmpInfo.bmiHeader.biSize)))
return false;