一、播放时间的获取
OnSample( DWORD dwOutputNum, QWORD cnsSampleTime, QWORD cnsSampleDuration,
DWORD dwFlags, INSSBuffer __RPC_FAR *pSample, void __RPC_FAR *pvContext )
说明:cnsSampleTime 当前已经播放的时间值。long _lCurPos = (long)(cnsSampleTime/10000);
QWORD qDuration = 0;
IWMHeaderInfo * m_pReaderHeaderInfo->GetAttributeByName( &wVal, L"Duration", &wmtType, (LPBYTE)&qDuration, &cbLength );
_lDuration = (long)(qDuration/10000);//时间。
计算得时间,显示形式为:(时:分:秒),若小时数为0,则显示(分:秒),用两位数表示
Data WMOpt::GetTime(void)
{
char buff[1000];
Data dtTime;
long lMinute,lSecond;
long lHour=0;
long lTotalTime = getDuration()/1000;
long lPlayTime = getCurPos()/1000;
long lTime = lTotalTime - lPlayTime;//剩余时间。
lSecond = lTime%60;
lMinute = lTime/60;
if(lMinute>60)
{
lHour = lMinute/60;
lMinute = lMinute%60;
if(lHour<10)
sprintf( buff, "(0%d:",lHour);
else
sprintf( buff, "(%d:",lHour);
dtTime = buff;
}
else
dtTime = "(";
if(lMinute<10)
sprintf( buff, " 0%d:",lMinute);
else
sprintf( buff, " %d:",lMinute);
dtTime +=buff;
if(lSecond<10)
sprintf( buff, " 0%d)",lSecond);
else
sprintf( buff, " %d)",lSecond);
dtTime +=buff;
return dtTime;// Data();
}