Udostępnij przez


Odtwarzanie plików ze źródła sieciowego

[Funkcja skojarzona z tą stroną, windows Media Format 11 SDK, jest starszą funkcją. Zostało zastąpione przez Source Reader i Sink Writer. Czytnik źródeł i Zapis ujścia zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft stanowczo zaleca, aby nowy kod używał Czytnika Źródła i Zapisnika Odbioru zamiast Windows Media Format 11 SDK, o ile to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]

Odczytywanie z sieci nie różni się zasadniczo od odczytywania pliku lokalnego. Aplikacja przekazuje adres URL do metody IWMReader::Open, a obiekt czytelnika obsługuje szczegóły protokołów sieciowych. Obiekt czytnika używa inteligentnego zarządzania buforami, aby zapewnić możliwie najpłynniejsze odtwarzanie. Jeśli aplikacja potrzebuje większej kontroli nad ustawieniami sieci obiektu czytelnika, są one dostępne za pośrednictwem interfejsów IWMReaderNetworkConfig i IWMReaderNetworkConfig2.

Zawartość ze źródła sieci należy do jednej z następujących dwóch kategorii:

  • Przesyłanie strumieniowe. Dane są przesyłane na czas do odtwarzania na komputerze lokalnym. Serwery z systemem Windows Media Services mogą udostępniać dane przesyłane strumieniowo. W przypadku przesyłania strumieniowego zawartości o różnorodnych prędkościach bitowych (MBR) klient może zażądać innej prędkości bitowej z serwera w miarę postępu transmisji.
  • Pobrać. Wszystkie dane są przesyłane tak szybko, jak to możliwe, aby można je było zapisać jako plik na komputerze lokalnym. Serwery internetowe udostępniają pobrane dane. Po rozpoczęciu pobierania nie ma komunikacji między klientem a serwerem.

Gdy obiekt czytelnika pobiera plik z serwera sieci Web, używa techniki o nazwie progresywne przesyłanie strumieniowe, co umożliwia odtwarzaczowi rozpoczęcie renderowania zawartości przed zakończeniem pobierania. Dane są buforowane w celu zapewnienia nieprzerwanego przepływu danych do odtwarzacza. Informacje, takie jak szybkość transferu i czas trwania zawartości, służą do określenia, jak długo należy buforować dane przed przekazaniem go graczowi.

Aby otworzyć plik lub strumień za pośrednictwem sieci, wywołaj metodę IWMReader::Open z odpowiednim adresem URL. Open jest wywołaniem asynchronicznym, dlatego zwraca natychmiast. Gdy źródło jest gotowe do odczytu, obiekt czytelnika wysyła powiadomienie WMT_OPENED do metody wywołania zwrotnego aplikacji IWMStatusCallback::OnStatus. W tym momencie aplikacja może wysłać zapytanie do czytnika o tryb dostarczania, wywołując IWMReaderAdvanced2::GetPlayMode. W przypadku zawartości sieciowej ta metoda zwróci WMT_PLAY_MODE_DOWNLOAD, wskazując pobraną zawartość lub WMT_PLAY_MODE_STREAMING wskazującą zawartość strumieniową.

Aby rozpocząć odczytywanie pliku lub strumienia, wywołaj metodę IWMReader::Start. Czytelnik wysyła powiadomienie WMT_BUFFERING_START po rozpoczęciu buforowania zawartości, a powiadomienie WMT_BUFFERING_STOP po zakończeniu buforowania. Chociaż czytelnik buforuje zawartość (czyli między tymi dwoma powiadomieniami), może być konieczne wyświetlenie postępu buforowania dla użytkownika. Metoda IWMReaderAdvanced2::GetBufferProgress zwraca procent buforowanych danych i szacowany czas, który pozostaje. W przypadku pobranej zawartości możesz również wywołać IWMReaderAdvanced2::GetDownloadProgress, aby uzyskać postęp pobierania. Wywołaj te metody wielokrotnie, aby zaktualizować ekran, dopóki buforowanie nie zostanie ukończone. Buforowanie może wystąpić ponownie podczas odtwarzania z powodu czynników, takich jak przeciążenie sieci. W takim przypadku aplikacja otrzyma kolejne powiadomienie WMT_BUFFERING_START.

Gdy obiekt czytelnika zacznie odtwarzać zawartość, wysyła powiadomienie WMT_STARTED. Ponieważ każda próbka jest dekodowana i staje się dostępna do renderowania, odczytywacz przekazuje ją do aplikacji za pośrednictwem metody wywołania zwrotnego IWMReaderCallback::OnSample. W tym momencie proces jest taki sam, jak w przypadku lokalnego odtwarzania plików. Po zatrzymaniu odtwarzania czytnik wysyła powiadomienie WMT_END_OF_STREAMING.

odczytywanie plików ASF