how to get a clips from a video file?
我建立的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个工作日开发优化。该接口已在某大厂项目中实际应用,可有效处理批量文
政府科技管理者在推动科技成果转化过程中,如何精准识别重点产业的共性技术需求?.docx
政府科技管理者在推动科技成果转化过程中,如何精准识别重点产业的共性技术需求?
高校技术转移办公室人员如何高效管理并推广本校科技成果?.docx
科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。
产业园区如何精准对接企业技术需求与高校科研成果?.docx
科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。
不平衡电网下的svg无功补偿,级联H桥svg无功补偿statcom,采用三层控制策略(Simulink仿真实现)
内容概要:本文围绕不平衡电网条件下采用级联H桥结构的静止无功发生器(SVG/STATCOM)开展无功补偿技术的研究,提出了一种基于三层控制策略的系统化解决方案,并通过Simulink平台构建了完整的仿真模型进行验证。该方案以外环功率控制实现无功指令的精确生成,以中环电流控制提升动态响应能力,以内环调制控制确保输出波形质量,三层协同有效增强了系统在电压不平衡工况下的稳定性和补偿精度。文章系统阐述了主电路拓扑设计、数学建模、控制算法实现及仿真调试全过程,重点解决了负序电流抑制、三相功率平衡等关键技术难题,在高比例新能源接入导致电能质量恶化的现代电力系统中具有良好的应用前景; 适合人群:电气工程、自动化、电力电子与电力传动等相关专业的硕士博士研究生、从事电能质量治理与柔性输电技术研究的科研人员及工程技术人员; 使用场景及目标:①深入理解SVG在电网电压不平衡条件下的无功补偿机理与控制逻辑;②为级联H桥STATCOM的控制系统设计提供可复现的理论框架与仿真范例;③支撑柔性交流输电系统(FACTS)、智能电网与微电网电能质量提升等领域的科研攻关、项目开发与高水平论文撰写; 阅读建议:建议结合提供的Simulink仿真模型同步学习,重点剖析三层控制架构的信号流向与参数整定方法,对比SVC等传统补偿装置的性能差异,以深化对先进无功补偿技术优势与适用边界的认知。


图形处理/算法
