2016-02-08 32 views
14

Używam MediaElement do odtwarzania wideo w Internecie. Po opuszczeniu strony zauważyłem w Menedżerze zadań, że moja aplikacja nadal używa 10% sieci i nie spadła, dopóki nie zakończyło się pobieranie wideo.Wideo w sieci MediaElement nie przerywa buforowania.

Próbowałem wykonać następujące czynności, ale bez powodzenia.

//open link; 
    mediaElement.Source = welcomeVideoURL; 

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

Próbowano również ustawić źródło na fikcyjny link, ale wciąż nie ma szczęścia.

Pomyślałem, że otwarcie linku jako strumienia i użycie mediaElement.SetSource() może działać, ale nie znalazłem nic na ten temat ... może nie szukam poprawnego.

Dziękuję.

+1

Czy próbowałeś bez 'mediaElement.AudioCategory = AudioCategory.ForegroundOnlyMedia'. Czy twój serwer jest w stanie obsłużyć zakres HTTP? Jeśli tak nie jest, nie ma możliwości pobrania pliku wideo w częściach i powinno zostać pobrane wszystko na raz. – kiewic

+1

Próbowałem, nie działa. Mówi też, że jest przestarzałe. Wierzę, że pobierający tło, który znajduje się w MediaElement, po prostu nie usuwa. Ale wypróbowałem twój HttpRandomAccessStream i działało idealnie !. – Stamos

+1

Spójrz na ['this'] (http://stackoverflow.com/a/19295826/5697616). Kontekstowy może być inny, ale możesz wymusić spadek strumienia przez zmianę wartości 'isEnabled' na' false', a następnie wykonanie standardowego '.Stop()' i zerowanie w module obsługi. Mogłaby również wymusić usunięcie – Gabe

Odpowiedz

2

Znaleźliśmy ten MediaElementWithHttpClient w inny question w komentarzu wykonane przez @kiewic. Potrafię zarządzać procesem przesyłania strumieniowego i pobierania i łatwo go usunąć.

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