inohilog

/var/log/inohiro

Silverlight & WPF Memo

学園祭の実行委員会が生中継の形態として「にゃふにゃふ動画」ってのを作って、SUGEEEだったので、Silverlightでストリーミング拾ってコメントつけられるかなって友達とがんばってみました。


結果的に、Silverlightだとできなかった(原因もよくわからん!)のですが、その途中で調べたときに有益だった情報をメモとして残しておきます。(Silverlightはストリーミング対応だったからできるはずなんだが。)


Silverlightのエラーとしては、

  • 最初:1001 Download Error
  • 次:2102 Initialize Error
  • 最後:4001 Media Error

って感じでした。1001はDownloadに失敗してるから表示されるようで、Sourceの値を変えたりしたら、今度は2101。あとはアクセス先のポート番号が必要のようで、ポート番号を指定するとMedia Error。ファイル形式(?)がうまく当てはまってないのか。。しかしSilverlightは見せるだけだし、ストリーミング対応って書いてあるんだけどなぁ。

Blogs

SilverlightでMMSのストリーミングをキャッチ。これがやりたかったのです。
Getting Silverlight to play a live stream with MMS
これの通りにやってもうまくいかん。


SilverlightActiveXコントロール(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

Silverlight 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.IsMuted プロパティ


//どうやらMediaElementの他に、MediaPlayerてのがあるらしい。