5

WMP インスタンスに PlayList をロードして、1 曲だけループさせたいと思っています。これまでにグーグルで調べたものはすべて、これを行うように指示しています:

private AxWindowsMediaPlayer wmp;
wmp.settings.setMode("loop", true);

ただし、これはプレイリスト全体を繰り返すだけのようです。私が望む動作は、PlayList の曲 5 が再生されているときに「リピート」を有効にすると、曲 5 が終了したときに (曲 6 に進むのではなく) 自動的に繰り返されることです。ほとんどの車載用 MP3 プレーヤーは、既にこの方法で動作しています。私のC#プログラムでこれを行うためのネイティブな方法はありますか、それとも、次の曲がロードされたときに発生するイベントをインターセプトするなど、「ハック」ソリューションを考案する必要がありますか?

4

4 に答える 4

1

これが私のアプローチです。私のプレイリストでは、WMPLib プレイリストを使用する代わりに、タイプ IWMPMedia の静的な汎用リストを作成しました。これにより、一般的なリストがすべての曲を追跡するという点で、問題なくプレイリストに曲を追加することができました。曲を繰り返すために、プレイリストで現在再生中の曲の現在のインデックスを取得し、それを整数に設定し、次の行に沿って何かを行いました。

int repeatSongIndex = index;//in this case, our index is the current song playing

player.URL = playlist[repeatSongIndex].sourceURL;//lets have player.URL point to the song object chosen to be repeated to its source url (the directory of the file). 
bool isRepeat = true;//to keep track of whether the repeat option is enabled or not.
于 2013-12-30T08:40:27.203 に答える
1

何度も繰り返し再生したい曲を 1 曲だけ使用して、新しいセットを作成してみてください。

于 2010-04-07T12:29:43.307 に答える
0

簡単に言えば、WMP は1 つのトラックの繰り返しをサポートしていないということです。

そのため、Machta の提案に従い、プレイリストを動的に編集することが最善の方法です。たとえば、プレイリスト内の 1 つのトラックを繰り返したい場合は、その 1 つのトラックのみを含むようにプレイリストを編集し、ループを有効にします。古いプレイリストを別の場所に保存することを忘れないでください。ユーザーが曲のループを無効にすると、古いプレイリストが復元され、繰り返されないように設定されます。

残念ながら、プレイリストを変更すると曲が最初から開始される可能性があるという欠点があります。ジェームズの提案に従って、プレイリストの変更をMediaEnded状態に合わせてスケジュールしてください。

それが私があなたに言える最高のことです。

于 2012-06-02T20:49:21.687 に答える
0

PlayStateChangeイベントを処理しMediaEndedて、現在のトラックの状態が設定されたことを検出し、巻き戻すことはできませんか?

于 2010-04-07T12:29:18.627 に答える