Przechowywanie skompresowanych multimediów w plikach AVI (Microsoft Media Foundation)
Każda zawartość skompresowana przy użyciu koderów audio i wideo w systemie Windows Media musi być umieszczana w formacie kontenera. Jednym z najpopularniejszych formatów jest Audio Video Interleave lub AVI. Do tworzenia plików AVI można użyć usługi Microsoft Video dla systemu Windows (VfW) lub Microsoft DirectShow.
Kodetki audio i wideo w systemie Windows Media zostały opracowane w celu używania właściwości formatu Advanced Systems Format (ASF), który jest kontenerem używanym przez usługę Windows Media. Ponieważ pliki AVI i ASF przechowują zawartość inaczej, podczas przechowywania zawartości skompresowanej za pomocą koderów audio i wideo w pliku AVI występują pewne trudności.
Koderi audio systemu Windows Media kompresują zawartość audio w taki sposób, że nie może być prawidłowo zdekompresowana bez sygnatur czasowych dla poszczególnych przykładów. Umożliwia to optymalizację w skompresowanym nośniku. Ponieważ kontener ASF przechowuje znaczniki czasowe ze wszystkimi próbkami, ta cecha algorytmów audio zawsze funkcjonowała efektywnie.
Pliki AVI nie przechowują jednak sygnatur czasowych z przykładami. Oznacza to, że zawartość audio systemu Windows Media nie może być prawidłowo zdekompresowana w przypadku przechowywania w pliku AVI. Zawartość usługi Windows Media Video nie ma tego ograniczenia i może być uwzględniona w plikach AVI. Aby zakodować zawartość usługi Windows Media Video do pliku AVI z zsynchronizowanym dźwiękiem, należy użyć innego kodera audio.
Inny problem z używaniem pliku AVI jako kontenera dla usługi Windows Media dotyczy wideo o niskiej szybkości bitów. Jednym ze sposobów, w jaki kodeki wideo Windows Media Video tworzą zawartość wideo dla niskiej przepływności bitowej, jest pomijanie zduplikowanych ramek. Jeśli chcesz umieścić zawartość formatu Windows Media Video w pliku ASF, należy ustawić koder tak, aby generował fikcyjne ramki dla zduplikowanych ramek (ustaw MFPKEY_PRODUCEDUMMYFRAMES na VARIANT_TRUE), aby każda ramka była reprezentowana w pliku. Fikcyjne ramki generowane przez kodek mają rozmiar 8 bajtów. Jednak ramka zapisana w pliku przez multiplekser AVI może być większa setki bajtów i wypełniona losowymi danymi. Plik AVI wykonany w ten sposób będzie nadal odtwarzalny, ale będzie znacznie większy niż oczekiwano. Ten problem można uniknąć, używając wyższej przepustowości bitowej podczas kodowania wideo do przechowywania w plikach AVI.
Tematy pokrewne