MCI_STATUS_PARMS mciSP;
mciSP.dwItem=MCI_STATUS_LENGTH;
DWORD dwReturn=mciSendCommand(nDeviceID,MCI_STATUS,MCI_STATUS_ITEM,(DWORD)(LPVOID)&mciSP);
SongLength=mciSP.dwReturn
我用以上语句得到歌曲的时长,但是问题也出现了……
我测了几首歌曲,发现有些歌曲时长测得准确,而有的测得的结果跟这首歌的实际时长相差很大,求高人指教!!

解决方案 »

  1.   

    hr = WMCreateReader( NULL, 0, &m_pReader );
    hr = m_pReader->Open( pwszInputFile, this, NULL );
    hr = m_pReader->QueryInterface( IID_IWMHeaderInfo, (void **)&m_pReaderHeaderInfo )
    m_pReaderHeaderInfo ->GetAttributeByName(&wStream, g_wszWMDuration, &type, (BYTE*)&duration, &wBytes);
      

  2.   

    你看看有没有跟speed有关的标识,用长度除以速度就是时间了,或者就是用MCIWndGetLength/MCIWndGetSpeed