`

VC WMP控件关于获取媒体时长 00的问题。

 
阅读更多

在VC下,使用Windows media player控件播放媒体列表时,只有播放列表里的第一个媒体在调用get_durationString()方法获取媒体长度时的结果为00:00,网上都说获取这个长度的方法是异步的,得到的结果是不准确的,需要处理一个等待消息。

最后,我在添加媒体到播放列表时,随意调用媒体的一个get方法,结果在用get_durationString()获取媒体长度时就可以输出正确的结果了:

部分代码如下:

 

m_playlist.clear();   // 先清空播放列表
		
		m_list2.ResetContent();   // 列表控件
		// m_vecVideoList为存储播放列表的集合
		for (int i =0;i<m_vecVideoList.size();i++)  
		{
			CString mediaFileName;  // 存储视频文件名称
			mediaFileName =  m_vecVideoList.at(i);          // 指定索引的视频文件路径
			// 添加播放列表到列表控件
			m_list2.InsertString(i,mediaFileName);

			// 创建一个媒体
			CWMPMedia media = m_mPlayer.newMedia(mediaFileName);  
			// 调用获取属性的方法(随便调用,也可以是get_durationString)
			media.get_name();
			// 将媒体添加到播放列表
			m_playlist.appendItem(media);
		}
		// 添加播放列表到当前Player控件
		m_mPlayer.put_currentPlaylist(m_playlist);
		
		// 获取控件的当前播放列表
		CWMPPlaylist playlist = m_mPlayer.get_currentPlaylist();
		for (int i=0;i<playlist.get_count();i++)
		{
			CWMPMedia media = playlist.get_Item(i);
			// 输出,
			SetMsg(media.get_name());
			// 在这里就可以正常输出时长了。
			SetMsg(media.get_durationString());
		}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics