C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[11]: メディアプレイヤーに曲のリストを渡す


(過去ログ 69 を表示中)

[トピック内 12 記事 (1 - 12 表示)]  << 0 >>

■40001 / inTopicNo.1)  メディアプレイヤーに曲のリストを渡す
  
□投稿者/ ミュージ (1回)-(2009/08/19(Wed) 13:24:53)

分類:[C#] 

こんにちは。
メディアプレイヤーを使った音楽再生について教えてください。
mediaPlayer.URL = path;
mediaPlayer.controls.play();
で再生できるのですが、
mediaPlayer.controls.next();
でつぎつぎと曲を再生するために、
string[] musiclist;
にすでに曲があるとして、
メディアプレイヤーに曲のリストを渡すにはどうしたらいいのでしょう?
1曲ずつ渡すしかないんですか?
それともまとめて配列ごと渡せるのでしょうか?
ご示唆ください。

引用返信 編集キー/
■40013 / inTopicNo.2)  Re[1]: メディアプレイヤーに曲のリストを渡す
□投稿者/ Hongliang (446回)-(2009/08/19(Wed) 14:46:23)
2009/08/19(Wed) 15:00:33 編集(投稿者)

質問が微妙ですが……。
AxWindowsMeidaPlayer にはプレイリストオブジェクトがあります。IWMPPlaylist インターフェイスで表現されます。
現在の IWMPPlaylist は、mediaPlayer の currentPlaylist プロパティで取得できます。
これで取得できた IWMPPlaylist の appendItem メソッドや insertItem メソッドによって、プレイリストに IWMPMedia オブジェクトを追加できます。
追加する IWMPMedia は、mediaPlayer の newMedia メソッドで取得できます。この newMedia メソッドにファイルパスを渡せます。
まとめてプレイリストに追加するなら、ループで回して newMedia から appendItem までを各ファイルごとに行うことになります。

ということでいいのかしら。

// ちょっと表現修正
引用返信 編集キー/
■40036 / inTopicNo.3)  Re[2]: メディアプレイヤーに曲のリストを渡す
□投稿者/ ミュージ (2回)-(2009/08/19(Wed) 17:03:10)
Hongliangさん、早速ありがとうございます。
なるほど。プレイリストなら渡せるんですね。
string[] musiclist;
foreach (string song in musiclist)	{mediaPlayer.newMedia(song);}
としてみたところ、コンパイルは通るのですが、なにも処理されませんでした。

いくつも疑問点が出てきました。
AxWindowsMediaPlayerってなんでしょう。
当方、WindowsXP + Windows Media Player 11です。
Axというのは見当たらないような気がします。

IWMPPlaylistへの追加は、appendItemということなので、
foreach (string song in musiclist)	{mediaPlayer.currentPlaylist.appendItem(song);}
としたところ、
'WMPLib.IWMPPlaylist.appendItem(WMPLib.IWMPMedia)' に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。
引数 '1': 'string' から 'WMPLib.IWMPMedia' に変換できません。
とエラーでした。
foreach (string song in musiclist)	{
mediaPlayer.newMedia(song);
mediaPlayer.currentPlaylist.appendItem(song);
}
とかでしょうか?
(これもだめですが)

引用返信 編集キー/
■40045 / inTopicNo.4)  Re[3]: メディアプレイヤーに曲のリストを渡す
□投稿者/ Hongliang (447回)-(2009/08/19(Wed) 18:00:57)
> AxWindowsMediaPlayerってなんでしょう。
> Axというのは見当たらないような気がします。
Windows Media Player の .NET 用 ActiveX コントロールの通称です。Ax てのは、.NET で ActiveX コントロールを利用するのに aximp.exe というツールを使用するんですが(VisualStudio で COM 参照したときに内部で暗黙的に使われています)、それが自動的に付ける接頭辞です。
変数 mediaPlayer にマウスポインタを持って行けば mediaPlayer の型がポップアップしますが、その型名が AxWindowsMediaPlayer になっていると思います。


> IWMPPlaylistへの追加は、appendItemということなので、
> foreach (string song in musiclist) {mediaPlayer.currentPlaylist.appendItem(song);}
> としたところ、
> 'WMPLib.IWMPPlaylist.appendItem(WMPLib.IWMPMedia)' に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。
> 引数 '1': 'string' から 'WMPLib.IWMPMedia' に変換できません。
> とエラーでした。
> foreach (string song in musiclist) {
> mediaPlayer.newMedia(song);
> mediaPlayer.currentPlaylist.appendItem(song);
> }
> とかでしょうか?

newMedia メソッドの返値が IWMPMedia 型オブジェクトですよ? 返値は分かりますよね?
で、appendItem メソッドの引数として渡せるのが IWMPMedia 型オブジェクトです。
引用返信 編集キー/
■40050 / inTopicNo.5)  Re[4]: メディアプレイヤーに曲のリストを渡す
□投稿者/ ミュージ (3回)-(2009/08/19(Wed) 19:07:07)
> newMedia メソッドの返値が IWMPMedia 型オブジェクトですよ? 返値は分かりますよね?
> で、appendItem メソッドの引数として渡せるのが IWMPMedia 型オブジェクトです。

返値わかってないです。すみません。
どうやって確認したらよいでしょう?
appendItemの引数として渡せるのがIWMPMedia型オブジェクトであることはわかるのですが。

引用返信 編集キー/
■40055 / inTopicNo.6)  Re[5]: メディアプレイヤーに曲のリストを渡す
□投稿者/ Hongliang (448回)-(2009/08/19(Wed) 20:08:51)
確認はまあインテリセンスでメソッド選んだら表示されますが。
mediaPlayer.new まで打ち込んだら、
WMPLib.IWMPMedia AxWindowsMediaPlayer.newMedia(string bstrURL)
って出ますよね。これは自分でメソッド定義するときと同じ構文です。
返値の型 メソッドを持ってる型名.メソッド名(引数の型 引数の名前)

返値が分からないってのはさすがに言葉が分からないだけだと思うんですが。
戻り値って言えば分かるのかしら。
例えば
// string keywords = "foo, bar, baz";
string[] result = keywords.Split(',');
で、string[] が返値の型、result が返値を受け取る変数、てことです。
引用返信 編集キー/
■40064 / inTopicNo.7)  Re[6]: メディアプレイヤーに曲のリストを渡す
□投稿者/ ミュージ (4回)-(2009/08/19(Wed) 21:40:41)
Hongliangさん、ありがとうございます。
理解が悪くてすみません…。

型と戻り値(返値)はわかっていると思います。
stringなら文字、intやdoubleなら数字とか、その程度は理解してます。

	mediaPlayer.newMedia(とすると
	WMPLib.IWMPMedia IWMP4.newMedia(string bstrURL)
と出るのはわかりました。

この場合のbstrURLってどんな書式なのかがわからずにいます。

URLの場合は
mediaPlayer.URL = path;
のpathに、"c:\〜〜.wma"
とファイルを指定すればよかったのですが、
たんに曲名ファイルを列挙したもの(playlistファイル)でよいんでしょうか。

曲のプレイリストファイルを作り、
mediaPlayer.newMedia("playlist.txt");
mediaPlayer.controls.play();
としてみましたが、再生されませんでした。

いろいろ試しても値がnullなので、書式が違っているのはわかるのですが、どう違っているかわからないでいます。
アドバイスいただければと。

引用返信 編集キー/
■40068 / inTopicNo.8)  Re[7]: メディアプレイヤーに曲のリストを渡す
□投稿者/ Hongliang (449回)-(2009/08/19(Wed) 22:15:23)
> この場合のbstrURLってどんな書式なのかがわからずにいます。
メディアへのパスです。メディアってのは再生するモノで、要するに mp3 とか wmv とかです。
プレイリストファイルのロードはまた別の話です。
引用返信 編集キー/
■40073 / inTopicNo.9)  Re[8]: メディアプレイヤーに曲のリストを渡す
□投稿者/ ミュージ (5回)-(2009/08/19(Wed) 23:09:37)
Hongliangさん。ありがとうございます。
メディアへのパス(フルパス?)ということは、

musiclist
C:\Documents and Settings\user\My Documents\My Music\YUI\YUI/again\01 again.wma
C:\Documents and Settings\user\My Documents\My Music\YUI\YUI/again\02 Sea.wma
C:\Documents and Settings\user\My Documents\My Music\YUI\YUI/again\03 SUMMER SONG ~YUI Acoustic Version~.wma

なら、

foreach (string song in musiclist)	{
mediaPlayer.newMedia(song);
mediaPlayer.currentPlaylist.appendItem(song);
}
mediaPlayer.controls.play();
でよさそうに思えます。
どこが違っているのか、ご指摘いただけるとうれしいです。
はまっているので…。

引用返信 編集キー/
■40074 / inTopicNo.10)  Re[9]: メディアプレイヤーに曲のリストを渡す
□投稿者/ Hongliang (450回)-(2009/08/19(Wed) 23:17:08)
> mediaPlayer.newMedia(song);
newMedia メソッドは IWMPMedia オブジェクトを返します。
何故返値を無視しているのでしょうか?

> mediaPlayer.currentPlaylist.appendItem(song);
appendItem メソッドは IWMPMedia オブジェクトを引数に取ります。
何故 string オブジェクトを渡しているのでしょうか?
引用返信 編集キー/
■40075 / inTopicNo.11)  Re[10]: メディアプレイヤーに曲のリストを渡す
□投稿者/ ミュージ (6回)-(2009/08/20(Thu) 01:05:56)
ひょっとして
foreach (string song in musiclist) {
mediaPlayer.currentPlaylist.appendItem(mediaPlayer.newMedia(song));
}
とかでしょうか?

引用返信 編集キー/
■40098 / inTopicNo.12)  Re[11]: メディアプレイヤーに曲のリストを渡す
□投稿者/ ミュージ (7回)-(2009/08/20(Thu) 13:05:05)
できました。ありがとうございました。
悩んでいた理由がわかりました。
foreach (string song in musiclist)	{
	型名 songs = mediaPlayer.newMedia(song)
	mediaPlayer.currentPlaylist.appendItem(songs);
}
のように書きたかったのです。
で、そのときの型名をなんと書くべきかわからなかったのです。
foreach (string song in musiclist)	{
	WMPLib.IWMPMedia songs = mediaPlayer.newMedia(song)
	mediaPlayer.currentPlaylist.appendItem(songs);
}
とかなんでしょうか。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -