如何在播放前获得文件中的相关信息,比如有的CD中的歌曲名,曲长等等。
有办法判断一个文件是音频文件还是视频文件吗?还有就是VCD中歌曲都是保存为dat文件格式,怎么能获得歌曲名列表呢?

解决方案 »

  1.   

    转贴:
    【DSHOW中判断媒体文件是否有视频】
    BOOL CheckIsVisiable(LPCTSTR szFile)
    {
      CComPtr< IMediaDet > pDet;
      BOOL FoundVideo = FALSE;  pDet.CoCreateInstance(CLSID_MediaDet); 
      if(!pDet)
      {
        AfxMessageBox(TEXT("Could not create CLSID_MediaDet"));
      }
      else
      {
        USES_CONVERSION;
        HRESULT hr;    // For UNICODE support, copy the CString into a TCHAR array
        TCHAR szFilename[MAX_PATH];
        _tcscpy(szFilename, (LPCTSTR) szFile);    hr = pDet->put_Filename(T2W(szFilename));
        if (FAILED(hr))
        {
          AfxMessageBox(TEXT("Failed to put filename"));
          return -1;
        }
        long StreamCount = 0;
        hr = pDet->get_OutputStreams(&StreamCount);
        if (FAILED(hr))
        {
          AfxMessageBox(TEXT("Failed to get output streams"));
          return -1;
        }    for(int i = 0; i < StreamCount; i++)
        {
          hr = pDet->put_CurrentStream(i);
          if (FAILED(hr))
          {
            AfxMessageBox(TEXT("Failed to put current stream"));
            return -1;
          }
          GUID StreamType;
          hr = pDet->get_StreamType(&StreamType);
          if (FAILED(hr))
          {
            AfxMessageBox(TEXT("Failed to get stream type"));
            return -1;
          }
          if(StreamType == MEDIATYPE_Video)
          {
            FoundVideo = TRUE;
          }
        }
      }
      return FoundVideo;
    }
      

  2.   

    怎么能从.cda文件中读出相关信息呢?
    我看Windows Media Player可以从CD中读出歌曲名,并且很正确。但是CD保存的是所谓的TrackXX.cda文件啊
      

  3.   

    可以查阅相关文件的格式,分析一下文件头就可以得到了.
    最简单的方法是用Media Player控件,用它可以很方便的获得各种信息,包括时间长度,信息,作者等等,反正有的信息都能获取.
      

  4.   

    to howtotell(从何谈起) :
    给个实际的代码看看!