分裂一个AVI文件到一个多页TIFF文件使用ltmmSampleTarget C

/ /定义辅助宏使用接口下C的ifndef COBJMACROS#定义COBJMACROS# endif# include“stdafx.h”/ /多媒体工具包包括铅头188宝金博怎么下载# include“ltmm.h”# include“l_bitmap.h”/ /包含amvideo。h VIDEOINFOHEADER,可在Visual Studio 6.0或举SDK# include < amvideo.h >/ /包含字符串处理# include < tchar.h ># include < wchar.h ># include < string.h ># include < stdio . h >/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / // / AviToTIFF/ /创建一个多页TIFF文件从一个AVI文件/ / pszAviFile -源文件的名字/ / pszOutputFile -气管无名动脉瘘管的输出文件的名称/ / nMaxFrames -最大的页面数(帧)附加到文件/ /HRESULT AviToTIFF (LPCWSTR pszAviFile L_CHAR * pszOutputFile,intnMaxFrames){HRESULT人力资源;IltmmConvert * pConvert =零;IltmmSampleTarget * pSampleTarget =零;IltmmMediaTypeDisp * pMediaType =零;IltmmMediaSampleDisp * pMediaSample;varFormat变体;varBuffer变体;VIDEOINFOHEADER * pVIH;无效* pbuf;型型;intn;BITMAPHANDLE位图;L_INT nRet;/ /初始化COM库hr = CoInitialize(空);如果(失败(人力资源)转到错误;/ /创建对象转换hr = CoCreateInstance (&CLSID_ltmmConvert, NULL, CLSCTX_INPROC_SERVER &IID_IltmmConvert (无效* *)&pConvert);如果(失败(人力资源)转到错误;/ /创建目标对象hr = CoCreateInstance (&CLSID_ltmmSampleTarget, NULL, CLSCTX_INPROC_SERVER &IID_IltmmSampleTarget (无效* *)&pSampleTarget);如果(失败(人力资源)转到错误;/ /创建媒体类型的对象hr = CoCreateInstance (&CLSID_ltmmMediaType, NULL, CLSCTX_INPROC_SERVER &IID_IltmmMediaTypeDisp (无效* *)&pMediaType);如果(失败(人力资源)转到错误;/ /设置MEDIATYPE_Video类型型= SysAllocString (L”{73646976 - 0000 - 0010 - 8000 - 00 - aa00389b71}”);hr = IltmmMediaTypeDisp_put_Type (pMediaType型);SysFreeString(型);如果(失败(人力资源)转到错误;/ /设置MEDIASUBTYPE_RGB24亚型型= SysAllocString (L“{e436eb7d - 524 f - 11 - ce - 9 - f53 - 0020 af0ba770}”);hr = IltmmMediaTypeDisp_put_Subtype (pMediaType型);SysFreeString(型);如果(失败(人力资源)转到错误;/ /设置接受媒体类型hr = IltmmSampleTarget_SetAcceptedMediaType (pSampleTarget pMediaType);如果(失败(人力资源)转到错误;/ /释放媒体类型,因为我们不需要它了IltmmMediaTypeDisp_Release (pMediaType);pMediaType =零;/ /设置转换输入文件的名字= SysAllocString型(pszAviFile);hr = IltmmConvert_put_SourceFile (pConvert型);SysFreeString(型);如果(失败(人力资源)转到错误;/ /设置转换对象的目标hr = IltmmConvert_put_TargetObject (pConvert (IUnknown *) pSampleTarget);如果(失败(人力资源)转到错误;/ /启动转换hr = IltmmConvert_StartConvert (pConvert);如果(失败(人力资源)转到错误;/ /获得连接媒体类型hr = IltmmSampleTarget_GetConnectedMediaType (pSampleTarget &pMediaType);如果(失败(人力资源)转到错误;/ /得到VIDEOINFOHEADERhr = IltmmMediaTypeDisp_get_Format (pMediaType &varFormat);如果(失败(人力资源)转到错误;hr = SafeArrayAccessData (V_ARRAY (&varFormat), (无效* *)&pVIH);如果(失败(人力资源){VariantClear (&varFormat);转到错误;}/ /设置shell位图句柄与样本数据相匹配nRet = L_CreateBitmap(位图,运算符(BITMAPHANDLE),TYPE_USER,pVIH - > bmiHeader.biWidth,abs (pVIH - > bmiHeader.biHeight),pVIH - > bmiHeader.biBitCount,ORDER_BGR,空,pVIH - > bmiHeader。biHeight > 0 ?BOTTOM_LEFT: TOP_LEFT,空,pVIH - > bmiHeader.biSizeImage);如果(nRet ! =成功){hr =失败;/ /初始化位图处理确保所以L_FreeBitmap不崩溃L_InitBitmap(位图,运算符(BITMAPHANDLE), 1, 1, 1);转到converterror;}(n = 0;n < 1 * nMaxFrames;n + +){/ /获取样本1000年hr = IltmmSampleTarget_GetSample (pSampleTarget &pMediaSample);如果(失败(人力资源)| | ! pMediaSample)打破;/ /访问图像碎片hr = IltmmMediaSampleDisp_get_Buffer (pMediaSample &varBuffer);如果(失败(人力资源){IltmmMediaSampleDisp_Release (pMediaSample);IltmmConvert_StopConvert (pConvert);转到converterror;}hr = SafeArrayAccessData (V_ARRAY (&varBuffer) &pBuffer);如果(失败(人力资源){VariantClear (&varBuffer);IltmmMediaSampleDisp_Release (pMediaSample);IltmmConvert_StopConvert (pConvert);转到converterror;}/ /设置位图数据指针示例nRet = L_SetBitmapDataPointer(位图,(L_UCHAR *) pbuf pVIH - > bmiHeader.biSizeImage);如果(nRet = =成功)/ /添加一个JPEG-compressed页面输出文件nRet = L_SaveFile (pszOutputFile,位图FILE_TIF_JPEG_411 0 25 SAVEFILE_MULTIPAGE,空,空,空);/ /释放样品SafeArrayUnaccessData (V_ARRAY (&varBuffer));VariantClear (&varBuffer);IltmmMediaSampleDisp_Release (pMediaSample);如果(nRet ! =成功){/ /出错,中止这个过程hr = E_FAIL;IltmmConvert_StopConvert (pConvert);转到converterror;}}/ /停止hr = IltmmConvert_StopConvert (pConvert);如果(失败(人力资源)转到converterror;/ /清理并退出hr = S_OK;converterror:SafeArrayUnaccessData (V_ARRAY (&varFormat));VariantClear (&varFormat);错误:如果(pConvert)IltmmConvert_Release (pConvert);如果(pSampleTarget)IltmmSampleTarget_Release (pSampleTarget);如果(pMediaType)IltmmMediaType_Release (pMediaType);CoUninitialize ();返回人力资源;}无效SplittingAVIFileIntoMultipageTIFFFileUsingltmmSampleTarget_Example (){AviToTIFF ((OLECHAR *) MAKE_MEDIA_PATH (“count.avi”),MAKE_MEDIA_PATH (“multi.tif”),100);}
LEADTOOLS多188宝金博怎么下载媒体C API的帮助
188金宝搏的网址客服|支持|联系我们|知识产权的通知
©1991 - 2021领先的技术公司。保留所有权利。