2010-12-15 10 views
0

この問題を解決するのに最も時間がかかります。 URLからオーディオファイルとビデオファイルを読み込むSilverlight 4アプリケーションがあります。 URLは、アプリケーションがホストされているのと同じドメインで、ビデオに適しています。Silverlight MediaElementでの再生を拒否する

実際には、URLはasp.net mvcコントローラであり、サーバー上の共有場所からファイルを読み込み、ファイルストリームを返します。 I場合

http://localhost:31479/CourseMedia?path= \ omnisandbox1 \ ILMSShare2デモ・ファイア+行動\メディア\ Disclaim.wma \ &暗号化= Falseの& ID = 00000000-0000-0000-0000-000000000000

:URLは次のようになりURLをブラウザに直接入力し、Windows Media Playerでファイルを読み込んで再生します。別のテスト用のSilverlightプロジェクトを使用してURLを読み込むと動作しますが、私の人生では正常に動作しません私の主なプロジェクトでは

これは私がに使用ルーチンは、実際にソースの設定んです:

protected void SetPlayerURL(MediaElement player, string url) 
{ 
     if (player != null && url.Length > 0) 
     { 
      player.ClearValue(MediaElement.SourceProperty); 
      player.Source = new Uri(this.Packet.GetMediaUrl(url, false, Guid.Empty));     
     } 
} 

とGetMediaURL機能は、単に上で見たURLの形式を構築します。

public string GetMediaUrl(
     string path, 
     bool encrypted, 
     Guid key) 
    { 
     StringBuilder builder = new StringBuilder(); 

     builder.AppendFormat("http://{0}/CourseMedia?path={1}&encrypted={2}&id={3}", 
      this.Host, 
      System.Windows.Browser.HttpUtility.UrlEncode(path), 
      encrypted, 
      key); 

     return builder.ToString(); 
    } 

コントローラへの要求は決してありませんそれがオーディオのときにメディアのために作られた。この正確なコードはビデオでうまく動作するので、私には奇妙に見えます。 MediaElementステートは決して "Closed"にならず、CurrentStateChanged、MediaOpened、およびMediaFailedイベントは決してトリガーされません。

私は迷っています!

+0

あなたはこれを確認しましたか?ホーストとパスは有効ですか? – thomasmartinsen

答えて

0

MediaElementのScrubbingEnabledをfalseに設定してください.Frame Frameworkバージョン3.5とオーディオにいくつかの問題があり、回避策ではfalseに設定しています。試してみる価値があるかもしれません。

また、BufferingStarted、BufferingEnded、MediaEndedをMediaFailedイベントとMediaOpenedイベントとともにキャプチャしてみてください。私はそれがバッファリングの問題であるかどうか不思議です。

+0

最終的に私たちはそれを理解しました。 Response.BufferingEnabledをfalseに設定してから、メディアが正常に再生されなくてはなりませんでした。 – moshjeier

関連する問題