当前位置:编程学习 > C#/ASP.NET >>

如何读avi文件的每一帧,并对每帧进行处理?急!

哪位大虾知道的告诉小弟一下呀!
或发到我的邮箱里:ycgmuyi@163.com
不甚感激! --------------------编程问答-------------------- http://www.codeproject.com/info/search.asp?cats=3&cats=6&searchkw=avi&Submit1=Search&author=&sd=15+Nov+1999&ed=25+Jun+2007

这里有很多AVI操作的例子
===================================================
技术交流不该有界限 资源共享不该有条件
博客空间:http://blog.csdn.net/lovingkiss
资源下载:http://download.csdn.net/user/lovingkiss
Email:loving-kiss@163.com
本人说明:<我的帖子我做主,结贴率保持100%>
1、欢迎一切问题有关的交流——无论答案对错;
2、不欢迎 顶、Mark、支持之类口水混分的人;
我保留对非<散分贴>蹭分者的厌恶和鄙视...
精通:jīnɡtōnɡ对学问技术等透彻的了解并熟练掌握
所以,我没有精通,只有JZ
=================================================== --------------------编程问答-------------------- http://www.codeproject.com/useritems/Get_bitmap_from_AVI_file.asp

把某一桢保存为图片,进行处理。

===================================================
技术交流不该有界限 资源共享不该有条件
博客空间:http://blog.csdn.net/lovingkiss
资源下载:http://download.csdn.net/user/lovingkiss
Email:loving-kiss@163.com
本人说明:<我的帖子我做主,结贴率保持100%>
1、欢迎一切问题有关的交流——无论答案对错;
2、不欢迎 顶、Mark、支持之类口水混分的人;
我保留对非<散分贴>蹭分者的厌恶和鄙视...
精通:jīnɡtōnɡ对学问技术等透彻的了解并熟练掌握
所以,我没有精通,只有JZ
=================================================== --------------------编程问答-------------------- 读:
DirectShow 

HRESULT GetAVIPoster(LPCTSTR pszFileName, BITMAPINFOHEADER **ppbmih)
{
    HRESULT hr;
    CComPtr<IMediaDet> pDet;

hr = pDet.CoCreateInstance(__uuidof(MediaDet));

    // Convert the file name to a BSTR.
    CComBSTR bstrFilename(pszFileName);
    hr = pDet->put_Filename(bstrFilename);

    long lStreams;
    bool bFound = false;
    hr = pDet->get_OutputStreams(&lStreams);
    for (long i = 0; i < lStreams; i++)
    {
        GUID major_type;
        hr = pDet->put_CurrentStream(i);
        hr = pDet->get_StreamType(&major_type);
        if (major_type == MEDIATYPE_Video)
        {
            bFound = true;
            break;
        }
    }
    if (!bFound)
return VFW_E_INVALIDMEDIATYPE;

    long width = 0, height = 0;
    AM_MEDIA_TYPE mt;
    hr = pDet->get_StreamMediaType(&mt);
    if (mt.formattype == FORMAT_VideoInfo)
    {
        VIDEOINFOHEADER *pVih = (VIDEOINFOHEADER*)(mt.pbFormat);
        width = pVih->bmiHeader.biWidth;
        height = pVih->bmiHeader.biHeight;

        // We want the absolute height, don't care about orientation.
        if (height < 0) height *= -1;
    }
    else
{
        return VFW_E_INVALIDMEDIATYPE; // Should not happen, in theory.
    }
    FreeMediaType(mt);

    long size;
    hr = pDet->GetBitmapBits(0, &size, NULL, width, height);
    if (SUCCEEDED(hr))
    {
        char *pBuffer = new char[size];
        if (!pBuffer) return E_OUTOFMEMORY;
        try
{
            hr = pDet->GetBitmapBits(0, NULL, pBuffer, width, height);
        }
        catch (...)
{
            delete [] pBuffer;
            return E_OUTOFMEMORY;
        }
        if (SUCCEEDED(hr))
        {
            // Delete the old image, if any.
            if (*ppbmih) delete[] (*ppbmih);
            (*ppbmih) = (BITMAPINFOHEADER*)pBuffer;
        }
    }
    return hr;
}


void FreeMediaType(AM_MEDIA_TYPE &mt)
{
if (mt.cbFormat != 0)
{
        CoTaskMemFree((PVOID)mt.pbFormat);
        // Strictly unnecessary but tidier
        mt.cbFormat = 0;
        mt.pbFormat = NULL;
    }
    if (mt.pUnk != NULL)
{
        mt.pUnk->Release();
    mt.pUnk = NULL;
    }
}

--------------------编程问答-------------------- mark --------------------编程问答-------------------- 友情UP一下 --------------------编程问答-------------------- directshow很是复杂啊,用c#改了半天也没弄明白,郁闷 --------------------编程问答-------------------- 不错不错。 --------------------编程问答-------------------- 可惜不懂。帮你顶吧。
--------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- 500分吧. 帮你改下
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,