Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
[Funkcja skojarzona z tą stroną, windows Media Format 11 SDK, jest starszą funkcją. Został zastąpiony przez Source Reader i Sink Writer. Czytnik źródła i zapisujący ujścia zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał czytnika źródeł i modułu zapisywania ujścia zamiast zestawu SDK windows Media Format 11, jeśli jest 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.]
Strumienie audio są zwykle najprostsze do skonfigurowania. Pobierz konfigurację strumienia z kodeka przy użyciu metod IWMCodecInfo zgodnie z opisem w Uzyskiwanie informacji o konfiguracji strumienia z kodeków. W większości przypadków nie należy zmieniać ustawień pobranych.
Format kodeka, który wybierasz z wymienionych, zależy od planowanego zastosowania plików ASF utworzonych przy użyciu profilu. Opis formatu codec pobrany przez IWMCodecInfo2::GetCodecFormatDesc podsumowuje cechy formatu. Jeśli aplikacja nie wyświetla opisów do wyboru między nimi, możesz wywołać QueryInterface w interfejsie IWMStreamConfig formatu kodeka, aby uzyskać interfejs IWMMediaProps. Następnie możesz pobrać strukturę WM_MEDIA_TYPE, wywołując IWMMediaProps::GetMediaType. Analizując strukturę WM_MEDIA_TYPE oraz strukturę WAVEFORMATEX, do której prowadzi, można określić ustawienia formatu kodeka i porównać je z własnymi wymaganiami.
Pobieranie formatów audio na potrzeby synchronizacji A/V
Kodek Windows Media Audio i Kodek Windows Media Audio Professional obsługują formaty plików audio oraz plików audio/wideo. Formaty tylko audio są zoptymalizowane pod kątem plików zawierających tylko dane audio, podczas gdy formaty audio/wideo są zoptymalizowane pod kątem audio, który znajduje się w pliku ze strumieniem wideo. Podczas wyliczania formatów kodeków dla tych kodeków formaty audio/wideo pojawiają się po formatach tylko audio. Opisy formatu audio/wideo zawierają ciąg "(A/V)". Formaty przeznaczone do synchronizacji audio/wideo można zidentyfikować programowo, sprawdzając liczbę pakietów na sekundę. Formaty synchronizacji mają co najmniej 5 pakietów na sekundę, jeśli szybkość bitów jest większa lub równa 32 000 bitów na sekundę. Formaty o szybkościach bitów mniejsze niż 32 000 bitów na sekundę mogą być używane z synchronizowanymi filmami wideo, jeśli używają co najmniej 3 pakietów na sekundę. Przykładowy kod w temacie Znajdowanie formatów audio zawiera kod wymagany do sprawdzenia:
if((pWave->nAvgBytesPerSec / pWave->nBlockAlign) >=
((pWave->nAvgBytesPerSec >= 4000) ? 5.0 : 3.0))
{
// Set this stream configuration as the new best match.
}
Pobieranie formatów audio Low-Delay
Kodek Windows Media 9.1 i kodek Windows Media Audio 9.1 Professional oba obsługują formaty o małych opóźnieniach. Te formaty mają mniejsze okno buforu niż inne formaty audio. Dźwięk o małym opóźnieniu ma na celu poprawę wydajności w scenariuszach, w których pliki lub strumienie będą często przełączane; na przykład aplikacja, która wyświetla listę wielu piosenek do przesyłania strumieniowego w interfejsie użytkownika i umożliwia użytkownikom arbitralne przełączanie się między nimi.
Formaty o małych opóźnieniach są dostępne tylko w trybie stałej przepływności bitów (CBR) (jednoprzepustowy lub dwuprzepustowy). Opisy formatów o niskim opóźnieniu zawierają ciąg "Low Delay". Formaty można zidentyfikować programowo, sprawdzając wartość szybkości bitów formatu. Formaty o małych opóźnieniach są przypisywane szybkości bitów, które są 1 kilobit mniejsze niż szybkość bitów równoważnego formatu normalnego. Na przykład koder dekodera Windows Media Audio 9.1 obsługuje format CBR z szybkością bitów wynoszącą 192 kb/s. Odpowiedni format o niskim opóźnieniu ma szybkość bitów wynoszącą 191 kb/s. Ponadto, z wyjątkiem formatu mono 5 kb/s obsługiwanego przez koder codec Windows Media Audio 9.1, formaty o niskim opóźnieniu są jedynymi formatami, które mają nieparzyste wartości szybkości bitów.
Konfigurowanie dźwięku o zmiennej szybkości bitów
Jeśli potrzebujesz formatu zmiennej szybkości bitów (VBR) dla jednego z koderów audio systemu Windows Media, możesz go uzyskać, ustawiając enumerację ustawienia w metodzie IWMCodecInfo3::SetCodecEnumerationSetting. Ustaw g_wszVBREnabled na True i ustaw g_wszNumPasses na 1 dla jakościowej VBR lub 2 dla dwuprzejściowej VBR (z ograniczeniami lub bez). Jeśli używasz ograniczonego dwuprzepustowego VBR, musisz ręcznie ustawić maksymalną szybkość transmisji bitów i okno buforu dla strumienia przy użyciu metod IWMPropertyVault zgodnie z opisem w Konfigurowanie strumieni VBR.
W profilach VBR opartych na jakości, składnik nAvgBytesPerSec struktury WAVEFORMATEX zawiera poziom jakości (od 1 do 100) w niskim bajcie, a trzy wysokie bajty są ustawione na 0x7fffff. Nie należy próbować modyfikować ustawienia jakości, modyfikując tę wartość ręcznie; należy użyć formatu pobranego z kodera. Aby użyć innej wartości jakości, należy wyliczyć formaty, dopóki nie znajdziesz tego, który spełnia Twoje potrzeby. Ponadto nAvgBytesPerSec nie zostaną zachowane w pliku ASF; po uzyskaniu struktury WAVEFORMATEX dla pliku, który został otwarty z obiektem czytnika, nAvgBytesPerSec zawiera przybliżoną wartość reprezentującą średnią liczbę bajtów na sekundę.
Notatka
Podczas konfigurowania strumieni audio nigdy nie należy mieć wartości okna buforu audio, która jest większa niż wartość dla jakichkolwiek strumieni wideo w pliku. Zwykle nie jest to problem, ponieważ wartości okien buforu audio powinny mieścić się w zakresie od 1,5 do 3 sekund, a wartości wideo powinny mieścić się w zakresie od 3 do 5 sekund. Jeśli okno buforu audio jest większe niż okno buforu wideo, plik będzie odtwarzany z strumieniami nieco poza synchronizacją.
Tematy pokrewne