2016-02-08 14 views
14

Ich verwende MediaElement, um ein Webvideo abzuspielen. Als ich die Seite verließ, bemerkte ich im Task-Manager, dass meine App immer noch 10% des Netzwerks verwendete und erst nach dem Herunterladen des Videos gelöscht wurde.MediaElement-Webvideo stoppt die Pufferung nicht

Ich versuchte folgendes, aber kein Glück.

//open link; 
    mediaElement.Source = welcomeVideoURL; 

    //when I leave the page OnNavigatedFrom() 
    mediaElement.Stop(); 
    mediaElement.ClearValue(MediaElement.SourceProperty); 
    mediaElement.Source = null; 

Auch versucht, die Quelle zu einem Dummy-Link, aber immer noch kein Glück.

Ich dachte, dass das Öffnen des Links als Stream und Verwendung mediaElement.SetSource() könnte funktionieren, aber ich habe nichts dazu gefunden ... vielleicht suche ich nicht richtig.

Vielen Dank.

+1

Haben Sie versucht, ohne 'mediaElement.AudioCategory = AudioCategory.ForegroundOnlyMedia'. Und, ist Ihr Server in der Lage, HTTP Range zu verarbeiten? Wenn dies nicht der Fall ist, gibt es keine Möglichkeit, das Video in Teilen herunterzuladen und es sollte auf einmal heruntergeladen werden. – kiewic

+1

Versuchte es, funktioniert nicht. Sagt auch, dass es veraltet ist. Ich glaube, dass der Hintergrund-Downloader, der in MediaElement ist, nur nicht Dispose. Aber habe deinen HttpRandomAccessStream ausprobiert und perfekt funktioniert! – Stamos

+1

Werfen Sie einen Blick auf ['this'] (http://stackoverflow.com/a/19295826/5697616). Kontextuell kann das anders sein, aber Sie können möglicherweise den Stream zum Ablegen zwingen, indem Sie 'isEnabled' in' false' ändern und dann Ihren Standard '.Stop()' ausführen und im Handler auf Null setzen. Könnte auch eine Beseitigung erzwingen – Gabe

Antwort

2

Gefunden MediaElementWithHttpClient in einigen anderen question in einem Kommentar von @kiewic gemacht. Ich kann den Stream und den Download-Prozess verwalten und problemlos entsorgen.

HttpRandomAccessStream videoStream = await HttpRandomAccessStream.CreateAsync(new Windows.Web.Http.HttpClient(), videoUrl); 
mediaElement.SetSource(videoStream, videoStream.ContentType);