2011-08-10 5 views
1

http://archive.msdn.microsoft.com/ManagedMediaHelpersからサンプルをダウンロードしました。WP7オーディオストリーミングヘルプ

私はMP3MediaStreamSourceを使用して自分のコードを使用しています。しかし、私は完全に理解していないコードは、いくつかの説明が欲しいです。

public partial class MainPage : PhoneApplicationPage 
{ 
    private static string mediaFileLocation = "http://file-here.mp3"; 
    private static HttpWebRequest request = null; 
    private static Mp3MediaStreamSource mss = null; 

    public MainPage() 
    { 
     InitializeComponent(); 
    } 

    private void RequestCallback(IAsyncResult asyncResult) 
    { 
     HttpWebResponse response = request.EndGetResponse(asyncResult) as HttpWebResponse; 
     Stream s = response.GetResponseStream(); 
     mss = new Mp3MediaStreamSource(s, response.ContentLength); 
     Deployment.Current.Dispatcher.BeginInvoke(
      () => 
      { 
       this.wp7AudioElement.Volume = 100; 
       this.wp7AudioElement.SetSource(mss); 
      }); 
    } 

    private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     request = WebRequest.CreateHttp(MainPage.mediaFileLocation); 

     // NOTICE 
     // Makes this demo code easier but I wouldn't do this on a live phone as it will cause the whole 
     // file to download into memory at once. 
     // 
     // Instead, use the asynchronous methods and read the stream in the backgound and dispatch its 
     // data as needed to the ReportGetSampleCompleted call on the UIThread. 
     request.AllowReadStreamBuffering = true; 
     IAsyncResult result = request.BeginGetResponse(new AsyncCallback(this.RequestCallback), null); 
    } 
} 

私が説明する必要がある最後の方法ですが、なぜそれが悪い考えであり、どうやって違うのかについての通知は理解できません。

+0

これを行う方法を理解しましたか? –

答えて

0

基本的には、再生する前に1つのファイルを完全にダウンロードしていると伝えようとしています。ファイルが10MBの場合、完全にダウンロードされるまでに時間がかかることがあるので、これは良い考えではありません。

エンコーダを使用してファイルをチャンクし、必要に応じて読み込む方がよいでしょう。