回 帖 发 新 帖 刷新版面

主题:如何在Mediaplayer里打开其他文件?

能不能用个Button按钮直接打开播放文件,并用Mediaplayer播放?[em10][em10]

回复列表 (共5个回复)

沙发

这是我以前写的.希望能有些帮助.其中有些不相干的代码...
注意WindowsMediaPlayer 是Windows media player 的component,不是BCB自带的
Mediaplayer...Mediaplayer 不如这个好用.如果你有按Windows Media player,你
只要import activeX component就可以按装这个component了.十分容易...

Load music list:  mp3list is a vector of the music file names 
     
IWMPMediaPtr media1;
        for (int j =0; i < MP3List.size(); i ++ ) {
            media1 = MainForm->WindowsMediaPlayer1->mediaCollection->add(MP3List.at(i).c_bstr());

MainForm->WindowsMediaPlayer1->currentPlaylist->appendItem(media1);
            MainForm->MP3InfoWin->Lines->Add(ExtractFileName(MP3List.at(i)));
        }
        if ((MainForm->WindowsMediaPlayer1->playState==1) ||   // stopped
            (MainForm->WindowsMediaPlayer1->playState==10)){  // ready to play
            media = MainForm->WindowsMediaPlayer1->currentPlaylist->get_Item(0);
            MainForm->WindowsMediaPlayer1->controls->set_currentItem(media);
        }

play music:

        if (MainForm->WindowsMediaPlayer1->playState==2) {
            MainForm->WindowsMediaPlayer1->controls->play(); // continue

        }else if ((MainForm->WindowsMediaPlayer1->playState==1) ||   // stopped
            (MainForm->WindowsMediaPlayer1->playState==10)){  // ready to play
            media = MainForm->WindowsMediaPlayer1->currentMedia;
            //media = MainForm->WindowsMediaPlayer1->currentPlaylist->get_Item(0);
            MainForm->WindowsMediaPlayer1->controls->playItem(media);   // play, start from beginning

        }

板凳

open music:

    好像没有啊!

3 楼

void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (OpenDialog1->Execute())
 MediaPlayer1->Play(OpenDialog1->FileName);//错误
}

这个错在哪?应该怎样写才能正确打开文件?

4 楼

首先, 在我前一个例子中(WindowsMediaPlayer) 我先load music 再play.

如果用TMediaPlayer,你可以试一下以下的代码,希望有帮助.

Open and play:
MediaPlayer1->FileName = OpenDialog1->FileName;
MediaPlayer1->Open();
MediaPlayer1->Play();

Pause:
if (MediaPlayer1->Mode==mpPlaying) MediaPlayer1->Pause();

Stop:
MediaPlayer1->Stop();

5 楼

谢谢了~

if (OpenDialog1->Execute())
{
  MediaPlayer1->FileName=OpenDialog1->FileName;
  MediaPlayer1->Open();
  MediaPlayer1->Play();
  }

正确代码

我来回复

您尚未登录,请登录后再回复。点此登录或注册