このファイルがまだダウンロードされている間に、Windows Phoneでメディアファイルを再生する方法があるかどうか知りたいのですが?
現在、完全にダウンロードされたときにメディアファイルをダウンロードして再生できる機能を備えたアプリケーションがあります。(私は記事を使用してこの機能を作成しました)
つまり、簡単に言うと、最初にメディアファイルがURLからダウンロードされ、次にmediaElementを使用して再生します。
mediaElement.source = isolatedStorageFileStream;
その後、プレーヤーUIを介してこのファイルを使用できます。
ただし、私はこの機能を改善することを好みます。ダウンロードの進行中にファイルの再生を開始できるようにします。結局、これは次のようになります。ファイルのダウンロードを開始し、同時にこのファイルの復号化を開始し、同時にファイルの復号化された部分の再生を許可します。これまでのところ復号化については忘れましょう(ダウンロードしたファイルのメソッドはすでに作成していますが、少し変更する必要があります)。主な問題は、ダウンロードと再生という2つの並列タスクを許可する方法です。
最初の質問は次のとおりです。「MediaElementは「ソース」プロパティをソリッド(最終的にダウンロードされた)ファイルにのみ設定できますか、それともダウンロード中にこのストリームを使用できますか?」なぜなら、私はいくつかの情報を見つけました、それは:
「MediaElementは現在ストリーミングをサポートしていません。実際に再生する前に、まずファイル全体をロードします。」
、これがWindows Phoneを指しているかどうかはわかりませんが、かなり心配そうに聞こえます。
これができない場合、メディアファイルを操作するために他に何を使用できますか?ビデオのダウンロードには興味がありません。mp3オーディオファイルのみに制限しましょう。
現在、ダウンロードプロセスは次のように実装されています。
WebClient webClient = new WebClient();
webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(webClient_DownloadProgressChanged);
webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_OpenReadCompleted);
webClient.OpenReadAsync(new Uri(link));
次に、OpenReadCompletedで、ダウンロードファイルストリームがmediaFileのソースとして設定されます。
mediaFile.SetSource(isolatedStorageFileStream);
この後、メディアファイルを使用できます。
私の問題の解決策はありますか?私はWindowsPhoneのスレッド化とストリーミングにかなり慣れていないので、そのような機能を実装する方法がわかりません。
PSもちろん、私は同様の質問を見つけようとしましたが、失敗しました。ご存知の方はリンクをお願いします。
PPS英語でごめんなさい。