Sdílet prostřednictvím


Konfigurace videostreamů

[Funkce přidružená k této stránce, Windows Media Format 11 SDK, je starší funkce. Byl nahrazen čtečkou zdroje a zapisovačem jímky. Čtečka a Zapisovač jsou optimalizovány pro Windows 10 a Windows 11. Microsoft důrazně doporučuje, aby nový kód používal Čtečka zdrojů a Výstupní zapisovač místo Windows Media Format 11 SDK, pokud je to možné. Microsoft navrhuje, aby se stávající kód, který používá starší rozhraní API, přepsal, aby se nová rozhraní API používala, pokud je to možné.]

Streamy videa jsou ve své konfiguraci flexibilnější než zvukové streamy. Důvodem je to, že vlastnosti snímků, které tvoří video, se mohou značně lišit od jednoho souboru k dalšímu. Při načítání formátu kodeku pro kodek, který používáte, je nutné nastavit následující hodnoty pro objekty konfigurace video streamu.

Hodnota Popis
Přenosová rychlost Voláním IWMStreamConfig::SetBitrate nastavíte na požadovanou hodnotu. Kodek videa se pokusí komprimovat médium tak, aby splňovalo vaše specifikace. Pokud jsou vaše hodnoty příliš nízké, výsledné komprimované video bude velmi degradované.
Okno vyrovnávací paměti Chcete-li nastavit požadovanou hodnotu, zavolejte IWMStreamConfig::SetBufferWindow. Kodek videa se pokusí komprimovat médium tak, aby splňovalo vaše specifikace. Pokud jsou vaše hodnoty příliš nízké, výsledné komprimované video bude velmi degradované.
WMVIDEOINFOHEADER.rcSource Levý horní roh musí být nastavený na 0,0. Pravý dolní roh musí být nastaven na rozměry rámu. Například ve streamu 640x480 by tato nastavení byla 0 0 640 480.
WMVIDEOINFOHEADER.rcTarget Musí odpovídat rcSource.
WMVIDEOINFOHEADER.dwBitRate Musí se shodovat s přenosovou rychlostí nastavenou pro stream.
WMVIDEOINFOHEADER.AvgTimePerFrame Nastavte přibližný čas na jeden snímek.
BITMAPINFOHEADER.biWidth Nastavte šířku v pixelech požadované velikosti rámečku.
BITMAPINFOHEADER.biHeight Nastavte výšku v pixelech požadované velikosti rámečku.

 

Obsah videa se nepřehrá správně, pokud není zakódován na velikost, která je násobkem čtyř pro šířku i výšku. Výjimkou je RGB nekomprimované video, což může být libovolná velikost. Pokud se pokusíte nastavit velikost, která není násobkem čtyř, proces zapisování vrátí jednu z následujících chyb:

  • Chyba NS_E_INVALID_INPUT_FORMAT: Neplatný formát vstupu.
  • NS_E_NEPLATNÝ_FORMÁT_VÝSTUPU
  • NS_E_INVALIDPROFILE

Pokud používáte kódování proměnlivé přenosové rychlosti, možná budete muset provést další úpravy. Další informace naleznete v tématu Konfigurace služby VBR Streams.

Některé kodeky Windows Media Video podporují více úrovní složitosti. Úrovně složitosti určují algoritmy, které kodek použije při kódování streamu videa. Použití vysoké úrovně složitosti bude vyžadovat větší výpočetní výkon pro kódování a dekódování.

Každý kodek, který podporuje nastavení složitosti, zveřejňuje následující nastavení, která můžete načíst pomocí metody IWMCodecInfo3::GetCodecProp.

Nastavení Popis
g_wszComplexityMax Maximální úroveň kvality podporovaná kodekem.
g_wszComplexityOffline Navrhovaná úroveň kvality pro offline přehrávání.
g_wszComplexityLive Navrhovaná úroveň kvality pro přehrávání streamování.

 

Pokud chcete nastavit složitost datového proudu videa v profilu, použijte metodu IWMPropertyVault::SetProperty pomocí vlastnosti g_wszComplexity. Hodnota, kterou nastavíte, musí být menší nebo rovna maximální podporované složitosti kodeku.

Konfigurace společná pro všechny streamy

Konfigurace streamů

nastavení složitosti videa