Ujście pliku MPEG-4

Ujście pliku MPEG-4 tworzy pliki MP4. Aby uzyskać więcej informacji na temat formatu pliku MP4, zapoznaj się z następującymi dokumentami dotyczącymi standardów:

  • ISO/IEC 14496-12: Technologia informacyjna - Kodowanie obiektów audio-wizualnych - Część 12: Format pliku nośnika podstawowego ISO
  • ISO/IEC 14496-14: Technologia informacyjna - Kodowanie obiektów audio-wizualnych - Część 14: Format pliku MP4

Uwaga / Notatka

(Te zasoby mogą nie być dostępne w niektórych językach i krajach).

 

Ujście pliku MPEG-4 nie hermetyzuje funkcji kodowania.

Aby utworzyć ujście pliku MPEG-4, wywołaj funkcję MFCreateMPEG4MediaSink . Ujście pliku MPEG-4 uwidacznia następujące interfejsy za pośrednictwem elementu QueryInterface:

Pole opisu przykładu

MP4 to rozszerzalny format kontenera. Specyfikacja MP4 nie definiuje stałej struktury opisującej typy multimediów w kontenerze MP4. Zamiast tego definiuje hierarchię obiektów, która umożliwia definiowanie struktur niestandardowych dla każdego formatu. Opis formatu jest przechowywany w polu opisu przykładowego ('stsd') dla każdego strumienia. Przykładowe pole opisu zawiera listę przykładowych wpisów. Dla każdego przykładowego wpisu kod 4-bajtowy, podobny do FOURCC, definiuje strukturę formatu.

Ujście pliku MPEG-4 może wygenerować przykładowe pole opisu dla następujących formatów:

  • Wideo H.264/AVC
  • Dźwięk AAC
  • Dźwięk MP3

W przypadku innych formatów pole opisu przykładowego musi być podane w typie nośnika dla każdego strumienia. Aby określić przykładowy opis, ustaw następujące atrybuty dla typu nośnika:

Attribute Description
MF_MT_MPEG4_SAMPLE_DESCRIPTION Zawiera przykładowe pole opisu jako binarny obiekt blob.
MF_MT_MPEG4_CURRENT_SAMPLE_ENTRY Określa, które z przykładowych wpisów w przykładowym polu opisu jest obecnie aktywne. (Opcjonalnie).
Obecnie wartość musi być równa zero.

 

W niektórych przypadkach nie można wygenerować pola opisu przykładowego, dopóki wszystkie dane nie zostały zakodowane. Na przykład informacje, takie jak średnia szybkość bitów, mogą nie być znane z wyprzedzeniem. W takim przypadku można zaktualizować typ nośnika przy użyciu interfejsu IMFMediaTypeHandler w ujściu pliku MPEG-4. Należy to zrobić, zanim ujście mediów zostanie sfinalizowane.

Zazwyczaj typ nośnika jest tworzony przez koder nadrzędny. Koder może wygenerować nowy typ nośnika podczas przesyłania strumieniowego za pomocą zmiany formatu dynamicznego. Aby uzyskać więcej informacji, zobacz Zmiany formatu dynamicznego.

Wideo H.264/AVC

Ujście pliku MPEG-4 obsługuje wersję strumienia AVC, który ma podstawowy strumień wideo, z zestawem parametrów sekwencji (SPS) i zestawem parametrów obrazu (PPS) zawartymi w polu opisu przykładu, zgodnie z definicją w iso/IEC 14496 część 15 sekcja 5.1. Ujście pliku nie obsługuje alternatywnej metody przechowywania jednostek NALU SPS/PPS jako oddzielnego strumienia podstawowego zestawu parametrów.

Ujście pliku MPEG-4 może wygenerować pole opisu przykładu, ale musi być dostarczone z jednostkami SPS i PPS NALU. Określ te informacje w typie nośnika, ustawiając atrybut MF_MT_MPEG_SEQUENCE_HEADER . Wartość atrybutu to nagłówek sekwencji H.264. Nagłówek sekwencji musi zawierać jednostki SPS i PPS NALU rozdzielone przez kody początkowe 3-bajtowe lub 4-bajtowe.

Opcjonalnie podczas konfigurowania ujścia pliku można pominąć atrybut MF_MT_MPEG_SEQUENCE_HEADER z początkowego typu nośnika. W takim przypadku należy zaktualizować typ nośnika później, aby uwzględnić nagłówek sekwencji.

Ujście pliku MPEG-4 ma następujące wymagania dotyczące strumieni bitowych AVC:

  • Strumień bitowy musi być zgodny ze specyfikacją formatu H.264 Załącznik B. W szczególności jednostki NALU muszą być rozdzielane kodami początkowymi 3-bajtowymi lub 4-bajtowymi.
  • Przykłady multimediów muszą zawierać wszystkie wycinki i dane NALU, które odpowiadają jednemu czasowi prezentacji.
  • Podczas pisania ramek B w pliku MP4 należy ustawić zarówno sygnaturę czasową prezentacji, jak i sygnaturę czasową dekodowania. Jeśli strumień ma ramkę B, a znacznik czasu dekodowania nie jest ustawiony, składnik zapisywania MP4 zobaczy czas ramki przechodzący do tyłu i upuszcza ramkę.

Dźwięk AAC

W przypadku dźwięku AAC ujście pliku MPEG-4 może wygenerować przykładowe pole opisu dla następujących podtypów:

  • MFAudioFormat_AAC
  • MEDIASUBTYPE_RAW_AAC1

Aby uzyskać więcej informacji na temat tych podtypów, zobacz AAC Media Types (Typy multimediów AAC).

Dla podtypu MFAudioFormat_AAC typ nośnika opcjonalnie zawiera atrybut MF_MT_USER_DATA . Jeśli jest obecny, ten atrybut część struktury HEAACWAVEINFO , która pojawia się po strukturze WAVEFORMATEX (czyli po elemencie wfx ). Następnie są to dane AudioSpecificConfig(), zgodnie z definicją iso/IEC 14496-3. Jeśli atrybut MF_MT_USER_DATA nie jest obecny, przyjmuje się, że strumień jest profilem AAC Low Complexity (LC), a ujście pliku MPEG-4 generuje odpowiednie pole opisu przykładu.

W przypadku podtypu MEDIASUBTYPE_RAW_AAC1 ujście multimediów musi zawierać atrybut MF_MT_USER_DATA , a atrybut musi zawierać dane AudioSpecificConfig().

Ujście pliku MPEG-4 tworzy wariant MPEG-4 pola opisu przykładu AAC, używając przykładowego wpisu "mp4a" z objectTypeIndication = 0x40. Nie używa typów obiektów MPEG-2.

Dźwięk MP3

W przypadku dźwięku MP3 ujście pliku MPEG-4 może wygenerować przykładowe pole opisu na podstawie standardowego typu nośnika audio. (Zobacz Typy multimediów audio).

Ujście pliku MPEG-4 tworzy wariant MPEG-4 pola opisu przykładu MP3, używając przykładowego wpisu "mp4a" z objectTypeIndication = 0x6b dla audio MPEG-1.

Ograniczenia

  • Maksymalny rozmiar utworzonego pliku to 4 GB. W systemie Windows 8 obsługiwane są pliki duże niż 4 GB.
  • Ujście pliku MPEG-4 nie obsługuje list edycji ("edts" i "elst").

Aktualizacje systemu Windows 8 do źródła i ujścia MPEG-4

  • Obsługa odczytu i zapisu w systemie Windows 8 MPEG-4 źródła i ujścia. Nie jest to obsługiwane w źródle i ujściu systemu Windows 7 MPEG-4.

    Źródło MPEG-4 odczytuje kąt obrotu dla aktywnego toru wideo jako sumę kąta obrotu z "mvhd" i z "tkhd".

    Ujście MICROSOFT MPEG-4 zapisuje kąt obrotu w 'tkhd', ale zapisuje macierz 0 stopni (tożsamość) w 'mvhd'. Uwaga: ujście MPEG-4 firmy Microsoft obsługuje tylko pojedyncze ścieżki wideo.

    IPropertyStore odczytuje kąt obrotu tylko dla pierwszego toru wideo jako sumę kąta obrotu z "mvhd" i z "tkhd".

    IPropertyStore zapisuje kąt obrotu tylko dla pierwszego toru wideo w "tkhd" po kąt obrotu jest dostosowywany zgodnie z kątem obrotu w "mvhd", jeśli istnieje.

  • Fragmenty filmu ('moof') są obsługiwane w systemie Windows 8 MPEG-4 źródła i ujścia, ale "mfra" nie jest.

  • H.263 jest obsługiwany w źródle MPEG-4 systemu Windows 8.

    Źródło MPEG-4 mapuje teraz dwie czwórki "h263" i "s263" w formacie pliku MPEG-4 na typ nośnika MFVideoFormat_H263.

  • Dodano obsługę więcej czterechcc dla MJPEG w źródle MPEG-4 systemu Windows 8.

    Źródło MPEG-4 mapuje foucc "dmb1" na typ nośnika MFVideoFormat_MJPG.

  • Dodano obsługę metadanych Furigana w źródle MPEG-4 systemu Windows 8.

    Źródło MPEG-4 odczytuje metadane Furigana z "soal", "szyb", "soaa", "sonm" i "soco". IPropertyStore odczytuje metadane Furigana za pomocą zestawu odpowiednich PKEYs.

    W poniższej tabeli przedstawiono mapowanie między nazwą kanoniczną powłoki, kluczem właściwości i identyfikatorem pola/tagu w formacie pliku MPEG-4.

    (No changes needed) Klucz właściwości Identyfikator tagu/pola
    System.Music.AlbumTitleSortOverride PKEY_Music_AlbumTitleSortOverride soal
    System.Music.ArtistSortOverride PKEY_Music_ArtistSortOverride szybować
    System.Music.AlbumArtistSortOverride PKEY_Music_AlbumArtistSortOverride soaa
    System.TitleSortOverride _TitleSortOverride PKEY sonm
    System.Music.ComposerSortOverride PKEY_Music_ComposerSortOverride Soco

     

  • Obsługa atomów 3D stereo dodana w źródle MPEG-4 systemu Windows 8.

  • Obsługa AC3 i DD+ dodana w źródle i ujściu systemu Windows 8 MPEG-4.

  • Pliki większe niż 4 GB są obsługiwane w ujściu MPEG-4 systemu Windows 8 dla niefragmentalnego MP4.

  • Kontrola została zoptymalizowana w źródle MPEG-4 systemu Windows 8.

    Aby zmniejszyć opóźnienie, informacje dotyczące dwóch najbliższych klatek kluczowych dla określonej pozycji wyszukiwania są udostępniane za pośrednictwem IMFSeekInfo::GetNearestKeyFrames. Ponieważ ramka klucza nie ma ramek zależnych, przedstawia ramkę po dekodowaniu tylko jednej ramki. Użyj interfejsu IMFGetService::GetService , aby uzyskać ten interfejs za pośrednictwem źródła multimediów, potoku lub aplikacji.

    Ustaw szybkość na zero w źródle MPEG-4. Gdy potok jest w trybie czyszczenia, szybkość wynosi zero.

  • Usługi SPS i PPS można przechowywać w przykładowych danych w ujściu MPEG-4.

    MF_MPEG4SINK_SPSPPS_PASSTHROUGH atrybut ujścia MPEG-4 jest zdefiniowany w celu umożliwienia zapisywania plików SPS i PPS razem z przykładami wejściowymi (dane wideo H.264). Produkowane klipy mp4 są odtwarzane przez windows 7 MPEG-4 źródło i inne.

  • Usługi SPS i PPS można wyodrębnić z próbek wejściowych w ujściu MPEG-4.

    Jeśli spS i PPS nie są ustawione przez MF_MT_MPEG_SEQUENCE_HEADER na nośniku wejściowym typu ujścia MPEG-4, ujście MPEG-4 spróbuje wyodrębnić SPS i PPS z próbek wejściowych. Ujście MPEG-4 ignoruje wszystkie próbki danych wejściowych, dopóki nie znajdzie pierwszego dodatku SPS i PPS, ponieważ wszystkie próbki wejściowe bez usług SPS i PPS nie są w stanie dekodować.

  • Informacje 3D w rekordzie konfiguracji AVC są obsługiwane w przypadku niefragmentalnych plików MP4.

  • Długość NALU jest uwidoczniona dla skompresowanych próbek H.264 w celu zoptymalizowania dekodowania DXVA H.264 VLD.

    Zestawy źródłowe MPEG-4 MF_NALU_LENGTH_SET na nośniku wyjściowym typu MFVideoFormat_H264 lub MFVideoFormat_h264. Ustawia obiekt blob MF_NALU_LENGTH_INFORMATION w każdym przykładzie danych wyjściowych z cztero bajtową długością NALU dla różnych plików NALU w jednym skompresowanym przykładzie.

  • Dodano obsługę dźwięku MPEG2 ADTS w źródle MP4.

Requirements

Wymaganie Wartość
Minimalny obsługiwany klient
Windows 7 [tylko aplikacje klasyczne]
Minimalny obsługiwany serwer
Windows Server 2008 R2 [tylko aplikacje klasyczne]

Zobacz także

Źródła i ujścia multimediów

Ujścia multimediów

Obsługa MPEG-4 w Media Foundation

Obsługiwane formaty multimediów w programie Media Foundation