通过Windows Media Player控件获取音频文件的时长

最近在做一个项目,需要获取音频文件的时长。在网上查了很多资料,感觉用Windows Media Player插件比较方便,给大家分享一下。开发环境是VS2010 MFC对话框程序,在对话框上单击右键,插入ActiveX控件,选择Windows Media Player控件,如下图所示:


插入控件完成后,在工程中包含Windows Media Play控件类,下载地址如下点击打开链接。下载完后成后,在工程中包含CWMPMedia.h 、CWMPMedia.cpp、CWMPPlayer4.h、CWMPPlayer4.cpp。

需要给控件添加变量,这里需要手动添加。

CWMPPlayer4 m_Player;

void Ctest1Dlg::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_OCX1, m_Player);//绑定播放器控件 
}

好,添加完变量后就可以获取音频文件时长

void Ctest1Dlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	CFileDialog dlg(TRUE);
	if(dlg.DoModal() == IDOK)
	{
		CString str = dlg.GetPathName();

		
		CWMPMedia p = m_Player.newMedia(str);
		CString str1 = p.get_durationString();
		double t = p.get_duration();

		MessageBox(str1);

	}

}
好了,通过get_durationString() 和 get_duration()都可以获取文件时长,一个是时:分:秒的字符串格式,一个是返回秒数。


最后说一个出现的问题,在对话框上加上控件后,对话框打不开的问题,在初始化时加入以下代码,使你的应用程序成为ActiveX控件包容器

AfxEnableControlContainer();

新手第一次写,希望对大家有帮助!!谢谢



你可能感兴趣的:(通过Windows Media Player控件获取音频文件的时长)