how to get a clips from a video file?

xliu2019 xliu2019 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
这是我写的一段code,想实现从视频文件中提取一段出来的功能,
我建立的graph 是
source--->grabber--->writer

可是程序运行的时候,在连接videoout和writein两个pin的时候出错
HRESULT hr;
REFERENCE_TIME rtNow=10000000, rtStop=1000000000;
CoInitialize(NULL);

USES_CONVERSION;
CString m_szInputFile = "E:\\Video\\video\\19.mpg";
TCHAR * tFilename = m_szInputFile.GetBuffer(MAX_PATH);
WCHAR * wFilename = T2W(tFilename);

CComPtr< IGraphBuilder > pGraph;
pGraph.CoCreateInstance(CLSID_FilterGraph);
if(!pGraph)
{
AfxMessageBox(TEXT("Could not create a graph"));
return;
}
// create a CaptureGraphBuilder to help connect filters
CComPtr< ICaptureGraphBuilder > pBuilder;
pBuilder.CoCreateInstance(CLSID_CaptureGraphBuilder);
// tell the capture graph builder what graph we're using
hr = pBuilder->SetFiltergraph(pGraph);
if(FAILED(hr))
{
AfxMessageBox(TEXT("Could not setup capture graph"));
return;
}
// ask directshow to add the appropriate source filter for the given file
CComPtr< IBaseFilter > pSourceBase;
hr = pGraph->AddSourceFilter(wFilename, L"Source", &pSourceBase);
if(!pSourceBase)
{
AfxMessageBox(TEXT("Could not load source filter for file"));
return;
}
CComPtr< IBaseFilter > pVideoFilter;
pVideoFilter.CoCreateInstance(CLSID_SampleGrabber);
hr = pGraph->AddFilter(pVideoFilter, L"VideoGrabber");

CComPtr<IBaseFilter> pFileWriter;
hr = pFileWriter.CoCreateInstance(CLSID_FileWriter);
hr = pGraph->AddFilter(pFileWriter,L"File Writer");
//// Set File name in File Writer filter
CComPtr <IFileSinkFilter> pfsink;
hr = pFileWriter->QueryInterface(IID_IFileSinkFilter,(void**)&pfsink);
hr = pfsink->SetFileName(L"C:\\test.mpg"/*A2COLE(m_avi)*/,NULL);

CComPtr<IPin> pSourcePin = GetOutPin(pSourceBase, 0);
CComPtr<IPin> pVideoIn = GetInPin (pVideoFilter, 0);
CComPtr<IPin> pVideoOut = GetOutPin(pVideoFilter, 0);
CComPtr<IPin> pWriteIn = GetInPin(pFileWriter, 0);

hr = pGraph->Connect(pSourcePin,pVideoIn);
if(FAILED(hr))
{
AfxMessageBox(TEXT("Cannot connect up video chain:1"));
return;
}
hr = pGraph->Connect(pVideoOut,pWriteIn);
if(FAILED(hr))
{
AfxMessageBox(TEXT("Cannot connect up video chain:2"));
return;
}
CComQIPtr< IMediaControl, &IID_IMediaControl > pControl(pGraph);
CComQIPtr< IMediaSeeking, &IID_IMediaSeeking > pSeeking(pGraph);
CComQIPtr< IMediaEvent, &IID_IMediaEvent > pEvent(pGraph);

hr = pSeeking->SetPositions( &rtNow,
AM_SEEKING_AbsolutePositioning,
&rtStop,
AM_SEEKING_AbsolutePositioning );
// Run the graph.
hr = pControl->Run();

// Wait for completion.
long evCode;
hr = pEvent->WaitForCompletion(INFINITE, &evCode);
pControl->Stop();
// Clean up.
CoUninitialize();

请各位指点一下,另外,我的这段代码,能实现提取一段视频的功能吗?
...全文

相关推荐

【功能已上线】zip解压上传文件—到oss服务器—接口实现

【摘要】本文介绍了一个实现ZIP文件解压并上传至OSS服务器的Java解决方案。核心功能包括:1)通过MultipartFile接收前端上传的ZIP文件;2)使用ZipInputStream解压文件并进行类型校验;3)将解压后的文件转换为MultipartFile格式;4)通过AliOSSUtils工具类上传至OSS服务器。方案包含完整的工具类(UnZipUtil、OptimizeUtil、IoUtil等),支持文件类型过滤和路径配置,耗时2个工作日开发优化。该接口已在某大厂项目中实际应用,可有效处理批量文

被开发耽误的大厨

论文复现基于变频与移相协同控制的全桥LLC变换器模式切换平滑性优化(Simulink仿真实现)

内容概要:本文针对“基于变频与移相协同控制的全桥LLC变换器模式切换平滑性优化”这一主题,开展Simulink仿真实现与技术复现研究。通过构建全桥LLC谐振变换器的详细仿真模型,深入探讨在不同负载工况(如轻载、重载、待机与运行模式切换)下,如何结合变频控制(FM)与移相控制(PSM)的协同策略,优化系统动态响应的平稳性与效率。研究重点在于设计合理的控制逻辑,解决模式切换过程中可能出现的电压电流冲击问题,提升系统的稳定性和电能质量。文中系统阐述了控制策略的设计原理、关键参数的整定方法,并通过仿真结果验证了该协同控制方案在抑制瞬态扰动、实现无缝切换方面的有效性,完整复现了高水平学术论文中的核心技术路线,为电力电子变换器的先进控制提供了可复现的实践范例。; 适合人群:电力电子、电气工程及其自动化等相关专业的研究生、科研人员及从事开关电源、新能源变流器开发的工程师,尤其适合具备一定Simulink仿真经验与电力电子拓扑分析能力的专业人士; 使用场景及目标:①深入理解全桥LLC变换器在多模式运行下的变频与移相协同控制机理;②掌握在Simulink中对复杂谐振变换器进行建模、控制算法实现与仿真验证的全流程方法;③为学术论文写作、科研项目申报或高性能电源产品的工程开发提供可靠的技术参考与仿真基础; 阅读建议:建议结合所提供的Simulink模型文件与技术文档进行同步实践,重点关注变频与移相控制的切换逻辑、参数配合关系及过渡过程的动态特性,可通过调整负载条件观察系统的响应变化,以深化对模式切换平滑性实现机制的理解。

大龙不吃小鱼干

高校技术转移办公室人员如何高效完成科技成果全周期管理?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

可视化原型素材ppt格式

可视化原型素材ppt格式

clhqianqi

氢氟醚:绿色高效的氟化解决方案.docx

氢氟醚:绿色高效的氟化解决方案.docx

行业报告QY
评论 1
收藏 已收藏
分享
返回顶部
xliu2019
图形处理/算法 19,463 成员 50,678 内容