为什么有的AVI视频用AVIStreamGetFrameOpen读不出来,而有的视频就可以

peter88888888 2012-03-11 11:13:44
AviFrame = AVIStreamGetFrameOpen( m_pStream,NULL);
不知道是怎么回事,望各位大虾指点迷津~
...全文
380 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
二泉映月 2014-02-27
  • 打赏
  • 举报
回复
请问有谁解决了吗,我也遇到这个问题了,有路过的朋友要是知道,请给个答案啊。。。。。。。
幼稚园长老 2013-10-24
  • 打赏
  • 举报
回复
楼主问题解决了吗?我也出现这个问题
shanssz1988 2012-11-19
  • 打赏
  • 举报
回复
楼主问题解决了吗?是不是因为AVIStreamGetFrameOpen只能读非压缩视频?
peter88888888 2012-03-13
  • 打赏
  • 举报
回复
CFileDialog dlg(true,"*.avi",NULL,NULL,"*.avi|*.avi||");
if (dlg.DoModal()==IDOK)
{
m_pAviFrame = NULL;
m_iNumFrames = 0;
Framesize = 0;
index = -1;
IsTrack = FALSE;

CString strAviFilePath = dlg.GetPathName();

if(strAviFilePath=="") {
MessageBox("请先选择AVI视频文件!");
return;
}
else
{
AVIFileInit();

PAVIFILE avi;
int res = AVIFileOpen(&avi, strAviFilePath, OF_READ, NULL);

if ( res != AVIERR_OK )
{
//an error occures
if (avi != NULL)
AVIFileRelease(avi);

return ;
}

AVIFILEINFO avi_info;
AVIFileInfo(avi, &avi_info, sizeof(AVIFILEINFO));

int rate = 1000.0 / ( int((float)avi_info.dwRate / (float)avi_info.dwScale + 0.5) - 1);
Framesize = (((avi_info.dwWidth * 3) + 3) & 0xFFFC) * avi_info.dwHeight ;
pFrame = cvCreateImage( cvSize(avi_info.dwWidth, avi_info.dwHeight), IPL_DEPTH_8U, 3 );

res = AVIFileGetStream(avi, &m_pStream, streamtypeVIDEO /*video stream*/,0 /*first stream*/);

if (res != AVIERR_OK)
{
if (m_pStream != NULL)
AVIStreamRelease( m_pStream );

AVIFileExit();
return ;
}

//do some task with the stream
int iFirstFrame = AVIStreamStart(m_pStream);
if (iFirstFrame == -1)
{
//Error getteing the frame inside the stream
if (m_pStream != NULL)
AVIStreamRelease( m_pStream );

AVIFileExit();
return ;
}

m_iNumFrames = AVIStreamLength(m_pStream);
if (m_iNumFrames == -1)
{
//Error getteing the number of frames inside the stream
if ( m_pStream != NULL )
AVIStreamRelease(m_pStream);

AVIFileExit();
return ;
}
m_pAviFrame = AVIStreamGetFrameOpen( m_pStream,NULL/* (BITMAPINFOHEADER*) AVIGETFRAMEF_BESTDISPLAYFMT*/ /*&bih*/);
最后一条语句若不选NULL,让计算机自己选最优解码能播放所有AVI视频,但是读取出的视频会自动形成3幅图像,效果很不好,不知道哪个地方有问题?

ouyh12345 2012-03-11
  • 打赏
  • 举报
回复
解码器是否都有?

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧