学園祭の実行委員会が生中継の形態として「にゃふにゃふ動画」ってのを作って、SUGEEEだったので、Silverlightでストリーミング拾ってコメントつけられるかなって友達とがんばってみました。
結果的に、Silverlightだとできなかった(原因もよくわからん!)のですが、その途中で調べたときに有益だった情報をメモとして残しておきます。(Silverlightはストリーミング対応だったからできるはずなんだが。)
Silverlightのエラーとしては、
って感じでした。1001はDownloadに失敗してるから表示されるようで、Sourceの値を変えたりしたら、今度は2101。あとはアクセス先のポート番号が必要のようで、ポート番号を指定するとMedia Error。ファイル形式(?)がうまく当てはまってないのか。。しかしSilverlightは見せるだけだし、ストリーミング対応って書いてあるんだけどなぁ。
Blogs
SilverlightでMMSのストリーミングをキャッチ。これがやりたかったのです。
Getting Silverlight to play a live stream with MMS
これの通りにやってもうまくいかん。
SilverlightとActiveXコントロール(Windows Media Playerのブラウザコントロール)の併用
Interacting Silverlight (1.0) and ActiveX Media Player
Silverlight Streaming(今回探していた情報とは違うけど、メモ)個人的に日本語の同じ内容を書こうと思っている。
Silverlight Streaming
この人のブログはなんか面白そう。
silverlight: app streaming versus media streaming
WebSites
よくあるMediaElementを使って動画を扱う方法の他に、VideoBrushや3Dで表現する方法も書いてある。
Building Silverlight Video Applications
Silverlight.net Forum
これがやりたかった事のメインの内容。どうやらポート番号の指定が必要らしいですが。。。指定してもエラー番号・メッセージが変ってくるだけで。。。
How to use Windows Media Server and MMS in Silverlight?
Silverlgiht.net FAQ
MSDN Library
MediaEnded Event を書きなさい、っていう返答がどっかのフォーラムに書いてあったが必要なさそう。
MediaEmded Event
結局、WPFを使って(MediaElementだけですが)、Windowsアプリケーションを作りライブ中継を見るってっかんじになりました。4チャンネルぐらい放送されているので(カメラの場所)、4つ重ねて表示して、クリックすると一番前に出して見れるってのをつくった。ZIndexを使うとGridとかCanvasの中での表示順序を変えられます。
しかしこのZIndexの設定方法が、少なくとも私には意味がわからなくて、Gridのなかにある任意のMediaElement(Media1とする)のZIndexをいじるときは
Grid.SetZIndex(Media1, 1);
って書かないといけません。XAMLでZIndexをあらかじめ書こうとすると、
と書きます。なんかしっくりこない笑。
Panel.ZIndex 添付プロパティ
Panel.SetZIndex メソッド
任意のMediaElementの音を無くしたいときは、IsMutedをいじると一発で音のtrueかfalseが指定できます。これはすぐできた。
if (Media1.IsMuted)
Media1.IsMuted = false;
else
Media1.IsMuted = true;
//どうやらMediaElementの他に、MediaPlayerてのがあるらしい。