2016-02-08 23 views
14

Tôi đang sử dụng MediaElement để phát video trên web. Khi tôi rời khỏi trang, tôi nhận thấy trong Task Manager rằng ứng dụng của tôi vẫn đang sử dụng 10% mạng và không thả cho đến khi nó tải xong video.Video trên web MediaElement không ngừng lưu vào bộ đệm

Tôi đã thử làm như sau nhưng không có may mắn.

//open link; 
    mediaElement.Source = welcomeVideoURL; 

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

Cũng cố gắng đặt nguồn thành liên kết giả nhưng vẫn không có may mắn.

Tôi nghĩ rằng việc mở Liên kết dưới dạng luồng và sử dụng mediaElement.SetSource() có thể hoạt động nhưng tôi chưa tìm thấy bất kỳ thứ gì trên đó ... có thể tôi không tìm kiếm chính xác.

Cảm ơn bạn.

+1

Bạn đã thử không có 'mediaElement.AudioCategory = AudioCategory.ForegroundOnlyMedia'. Và, máy chủ của bạn có khả năng xử lý phạm vi HTTP không? Nếu không, không có cách nào để tải video xuống từng phần và nó sẽ được tải xuống cùng một lúc. – kiewic

+1

Đã thử, không hoạt động. Cũng nói rằng nó không được chấp nhận. Tôi tin rằng trình tải xuống nền bên trong MediaElement chỉ không được Vứt bỏ. Nhưng đã thử HttpRandomAccessStream của bạn và làm việc hoàn hảo !. – Stamos

+1

Hãy xem ['this'] (http://stackoverflow.com/a/19295826/5697616). Về mặt ngữ cảnh có thể khác nhưng bạn có thể buộc luồng phải giảm bằng cách thay đổi 'isEnabled' thành' false', sau đó thực hiện tiêu chuẩn '.Stop()' và nulling trong trình xử lý. Cũng có thể buộc phải vứt bỏ – Gabe

Trả lời

2

Tìm thấy điều này MediaElementWithHttpClient trong một số khác question trong một nhận xét được thực hiện bởi @kiewic. Tôi có thể quản lý luồng và quá trình tải xuống và dễ dàng vứt bỏ nó.

HttpRandomAccessStream videoStream = await HttpRandomAccessStream.CreateAsync(new Windows.Web.Http.HttpClient(), videoUrl); 
mediaElement.SetSource(videoStream, videoStream.ContentType); 
Các vấn đề liên quan