5

TWindowsMediaPlayer を使用していますが、問題が発生しています。現在の曲が完成した後、新しい曲を読み込んで再生することができません。

procedure TMainWinForm.WMPlayer1PlayStateChange(Sender: TObject;
          NewState: Integer);
  begin
    if (NewState = wmppsMediaEnded) then
      begin
        WMPlayer1.URL := FileScanner.SelectSong;
        writeln('Play triggered on ', String(WMPlayer1.URL));
        WMPlayer1.controls.Play;  // DOES NOT PLAY THE SONG!
      end;
  end;

これにより曲は読み込まれますが、実際に再生するには追加のユーザー操作が必要です。続行する唯一の方法は、wmppsStopped をチェックすることですが、そのイベントが 2 回発生するため、リスト内の奇数番号の曲をすべて取得します。

それを正しく機能させる方法についてのアイデアはありますか?

4

2 に答える 2

1

と思える答えが返ってきました。TWindowsMediaPlayer は非同期で動作しているように見えるため、メソッドを使用してイベントをトリガーするには、他のメソッドを許可しなければなりません。そのために、メディアが適切にロードされていないため、再生メソッドを拒否していたと思います。

procedure TMainWinForm.WMPlayer1OpenStateChange(Sender: TObject;
  NewState: Integer);
begin
  if NewState = wmposMediaOpen then
    begin
      WMPlayer1.controls.play;
    end;
end;

procedure TMainWinForm.WMPlayer1PlayStateChange(Sender: TObject;
  NewState: Integer);
begin
  if (NewState = wmppsStopped) and (SpecialPlayListMode) then
    begin
      WMPlayer1.URL := FileScanner.SelectSong;
    end;
end;

これは、他の何かが再生されている間にURLを変更して問題なく再生できる理由を説明していません...

于 2013-05-18T23:27:30.603 に答える
0

WMPlayer1.Mediacollectionを使用しないのはなぜですか?

WMPlayer1.settings.autoStart := True;それ以外の場合は、新しい URL を提供する前にテストしましたか?

于 2013-05-17T14:58:02.653 に答える