2013-04-08 9 views
5

Unsere App ist Video/Audio-basierte App, und wir haben alle Medien auf Windows Azure hochgeladen.Media-Datei programmgesteuert herunterladen in Windows Phone 8

Allerdings ist es erforderlich, um Benutzer Audio-Video-Datei auf Abruf herunterladen, so dass sie es lokal abspielen können.

Also ich muss Audio/Video-Datei programmgesteuert herunterladen und in IsolatedStorage speichern.

Wir haben Windows Azure Media-Dateizugriffs-URLs für jedes Audio/Video. Aber ich bin im ersten Schritt des Herunterladens von Mediendateien fest.

Ich googelte und stieß auf this article, aber für WebClient gibt es keine Funktion DownloadFileAsync, die ich verwenden kann.

Allerdings habe ich versucht, seine andere Funktion DownloadStringAsyn, und herunterladen Mediendatei ist in String-Format, aber nicht wissen, wie es in Audio (WMA)/Video (MP4) -Format zu konvertieren. Bitte schlage mir vor, wie kann ich fortfahren? Gibt es eine andere Möglichkeit, eine Mediendatei herunterzuladen?

Hier ist Beispielcode, die ich verwendet

private void ApplicationBarMenuItem_Click_1(object sender, EventArgs e) 
    { 
     WebClient mediaWC = new WebClient(); 
     mediaWC.DownloadProgressChanged += new DownloadProgressChangedEventHandler(mediaWC_DownloadProgressChanged); 
     mediaWC.DownloadStringAsync(new Uri(link));    
     mediaWC.DownloadStringCompleted += new DownloadStringCompletedEventHandler(mediaWC_DownloadCompleted);   

    } 

    private void mediaWC_DownloadCompleted(object sender, DownloadStringCompletedEventArgs e) 
    { 
     if (e.Cancelled) 
      MessageBox.Show("Downloading is cancelled"); 
     else 
     { 
      MessageBox.Show("Downloaded"); 
     } 
    } 

    private void mediaWC_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) 
    { 
     statusbar.Text = status= e.ProgressPercentage.ToString(); 
    } 

Antwort

1

Für binäre Daten herunterladen, verwenden Sie [WebClient.OpenReadAsync][1]. Sie können damit andere Daten als String-Daten herunterladen.

var webClient = new WebClient(); 
webClient.OpenReadCompleted += OnOpenReadCompleted; 
webClient.OpenReadAsync(new Uri("...", UriKind.Absolute)); 

private void OnOpenReadCompleted(object sender, OpenReadCompletedEventArgs e) 
{ 

} 
1

speichern in der Toolbox :)

public static Task<Stream> DownloadFile(Uri url) 
    { 
     var tcs = new TaskCompletionSource<Stream>(); 
     var wc = new WebClient(); 
     wc.OpenReadCompleted += (s, e) => 
     { 
      if (e.Error != null) tcs.TrySetException(e.Error); 
      else if (e.Cancelled) tcs.TrySetCanceled(); 
      else tcs.TrySetResult(e.Result); 
     }; 
     wc.OpenReadAsync(url); 
     return tcs.Task; 
    } 
+0

Can u ein vollständiges Beispiel für diese zur Verfügung stellen? Nach dem Aufruf von DownloadFile kann ich die Datei in isolatedStorage speichern –