/ /定义辅助宏使用接口下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);
如果(失败(人力资源)
转到错误;
/ /得到VIDEOINFOHEADER
hr = 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);
}
帮助收藏
光栅net|C API|c++类库|HTML5 JavaScript
文档net|C API|c++类库|HTML5 JavaScript
医疗net|C API|c++类库|HTML5 JavaScript
医疗Web查看器net
188宝金博怎么下载
支持的平台上
net, Java, Android和iOS / macOS组件
C / c++类库的API
HTML5 JavaScript库
你的邮件已经发送到支持!有人应该联系!如果你的问题是紧急请回到聊天。
聊天时间:
周一——周五,上午6点等
谢谢你的反馈!
请填写表单重新开始一个新的聊天。
所有代理目前离线。
聊天时间:
周一-周五
早上8:30 - 6点
联系我们请填写这张表格,我们将通过电子邮件联系你。