Share via


MPEG-4 File Sink

Il sink di file MPEG-4 crea file MP4. Per altre informazioni sul formato di file MP4, vedere i documenti standard seguenti:

  • ISO/IEC 14496-12: Information technology -- Codifica di oggetti audio-visivi -- Parte 12: Formato file multimediale di base ISO
  • ISO/IEC 14496-14: Information technology -- Codifica di oggetti audio-visivi -- Parte 14: Formato di file MP4

Nota

Queste risorse potrebbero non essere disponibili in alcune lingue e paesi.

 

Il sink di file MPEG-4 non incapsula la funzionalità di codifica.

Per creare il sink di file MPEG-4, chiamare la funzione MFCreateMPEG4MediaSink. Il sink di file MPEG-4 espone le interfacce seguenti tramite QueryInterface:

Casella di descrizione di esempio

MP4 è un formato di contenitore estendibile. La specifica MP4 non definisce una struttura fissa per descrivere i tipi di supporti in un contenitore MP4. Definisce invece una gerarchia di oggetti che consente di definire strutture personalizzate per ogni formato. La descrizione del formato viene archiviata nella casella della descrizione di esempio ('stsd') per ogni flusso. La casella di descrizione di esempio contiene un elenco di voci di esempio. Per ogni voce di esempio, un codice a 4 byte, simile a un FOURCC, definisce la struttura di formato.

Il sink di file MPEG-4 può generare la casella di descrizione di esempio per i formati seguenti:

  • Video H.264/AVC
  • Audio AAC
  • Audio MP3

Per altri formati, la casella di descrizione di esempio deve essere fornita nel tipo di supporto per ogni flusso. Per specificare la casella di descrizione di esempio, impostare gli attributi seguenti nel tipo di supporto:

Attributo Descrizione
MF_MT_MPEG4_SAMPLE_DESCRIPTION Contiene la casella di descrizione di esempio come BLOB binario.
MF_MT_MPEG4_CURRENT_SAMPLE_ENTRY Specifica quale delle voci di esempio nella casella di descrizione dell'esempio è attualmente attiva. (Facoltativo)
Attualmente, il valore deve essere zero.

 

In alcuni casi, non è possibile generare una casella di descrizione di esempio fino a quando tutti i dati non sono stati codificati. Ad esempio, le informazioni come la velocità media dei bit potrebbero non essere note in anticipo. In tal caso, è possibile aggiornare il tipo di supporto usando l'interfaccia IMFMediaTypeHandler nel sink di file MPEG-4. Questa operazione deve essere eseguita prima che il sink multimediale venga finalizzato.

In genere il tipo di supporto viene creato da un codificatore upstream. Il codificatore può generare un nuovo tipo di supporto durante lo streaming, tramite una modifica dinamica del formato. Per altre informazioni, vedere Modifiche al formato dinamico.

H.264/AVC Video

Il sink di file MPEG-4 supporta la versione del flusso AVC con un flusso video elementare, con set di parametri di sequenza (SPS) e set di parametri immagine (PPS) contenuti nella casella di descrizione dell'esempio, come definito nella sezione 15 della sezione 15 ISO/IEC 14496 sezione 5.1. Il sink di file non supporta il metodo alternativo di archiviazione di NALU SPS/PPS come flusso elementare separato del set di parametri.

Il sink di file MPEG-4 può generare la casella di descrizione dell'esempio, ma deve essere fornito con le URN SPS e PPS. Specificare queste informazioni nel tipo di supporto impostando l'attributo MF_MT_MPEG_edizione StandardQUENCE_HEADER. Il valore dell'attributo è l'intestazione della sequenza H.264. L'intestazione della sequenza deve essere costituita da SPS e PPS NALU delimitati da codici iniziali a 3 byte o a 4 byte.

Facoltativamente, quando si configura il sink di file, è possibile omettere l'attributo MF_MT_MPEG_edizione StandardQUENCE_HEADER dal tipo di supporto iniziale. In tal caso, è necessario aggiornare il tipo di supporto in un secondo momento per includere l'intestazione della sequenza.

Il sink di file MPEG-4 presenta i requisiti seguenti per i flussi bit AVC:

  • Il flusso di bit deve essere conforme alla specifica di formato H.264 Allegato B. In particolare, le NALU devono essere delimitate con codici iniziali a 3 byte o a 4 byte.
  • Gli esempi di supporti devono contenere tutte le unità di dati e sezioni che corrispondono a una singola presentazione.
  • Quando si scrivono fotogrammi B in un file MP4, è necessario impostare sia il timestamp della presentazione che il timestamp decodifica. Se il flusso ha un frame B e il timestamp di decodifica non è impostato, il writer MP4 visualizzerà l'intervallo di tempo che procede all'indietro e smarrerà il fotogramma.

Audio ACC

Per l'audio AAC, il sink di file MPEG-4 può generare la casella di descrizione di esempio per i sottotipi seguenti:

  • MFAudioFormat_AAC
  • MEDIASUBTYPE_RAW_AAC1

Per altre informazioni su questi sottotipi, vedere Tipi di supporti AAC.

Per il sottotipo MFAudioFormat_AAC, il tipo di supporto contiene facoltativamente l'attributo MF_MT_Uedizione StandardR_DATA. Se presente, questo attributo rappresenta la parte della struttura HEAACWAVEINFO visualizzata dopo la struttura WAVEFORMATEX, ovvero dopo il membro wfx. Questo è seguito dai dati AudioSpecificConfig(), come definito da ISO/IEC 14496-3. Se l'attributo MF_MT_Uedizione StandardR_DATA non è presente, si presuppone che il flusso sia un profilo AAC Low Complexity (LC) e il sink di file MPEG-4 generi una casella di descrizione di esempio appropriata.

Per il sottotipo MEDIASUBTYPE_RAW_AAC1, il sink multimediale deve contenere l'attributo MF_MT_Uedizione StandardR_DATA e l'attributo deve contenere i dati AudioSpecificConfig().

Il sink di file MPEG-4 crea la variante MPEG-4 della casella di descrizione dell'esempio AAC usando una voce di esempio "mp4a" con objectTypeIndication = 0x40. Non usa tipi di oggetto MPEG-2.

MP3 Audio

Per l'audio MP3, il sink di file MPEG-4 può generare la casella di descrizione di esempio da un tipo di supporto audio standard. (Vedere Tipi di supporti audio.

Il sink di file MPEG-4 crea la variante MPEG-4 della casella di descrizione dell'esempio MP3 usando una voce di esempio "mp4a" con objectTypeIndication = 0x6b per l'audio MPEG-1.

Limiti

  • La dimensione massima del file creato è 4 GB. In Windows 8 sono supportati file di grandi dimensioni di 4 GB.
  • Il sink di file MPEG-4 non supporta gli elenchi di modifica (caselle 'edts' e 'elst').

Aggiornamenti di Windows 8 all'origine e al sink MPEG-4

  • Supporto di lettura e scrittura di rotazione aggiunto nell'origine e nel sink MPEG-4 di Windows 8. Questo non è supportato nell'origine e nel sink MPEG-4 di Windows 7.

    L'origine MPEG-4 legge l'angolo di rotazione per una traccia video attiva come somma dell'angolo di rotazione da 'mvhd' e da 'tkhd'.

    Il sink MICROSOFT MPEG-4 scrive l'angolo di rotazione in "tkhd", ma scrive una matrice di 0 gradi (identità) in 'mvhd'. Nota, il sink Microsoft MPEG-4 supporta solo la traccia video singola.

    IPropertyStore legge l'angolo di rotazione solo per la prima traccia video come somma dell'angolo di rotazione da 'mvhd' e da 'tkhd'.

    IPropertyStore scrive l'angolo di rotazione solo per la prima traccia video in "tkhd" dopo che l'angolo di rotazione viene regolato in base all'angolo di rotazione in "mvhd", se presente.

  • I frammenti di film ('moof') sono supportati nell'origine e nel sink MPEG-4 di Windows 8, ma 'mfra' non lo è.

  • H.263 è supportato nell'origine MPEG-4 di Windows 8.

    L'origine MPEG-4 ora esegue il mapping di due quattrocc di 'h263' e 's263' in formato di file MPEG-4 al tipo di supporto di MFVideoFormat_H263.

  • Sono stati aggiunti altri quattrocc per MJPEG nell'origine MPEG-4 di Windows 8.

    L'origine MPEG-4 esegue il mapping di foucc di 'dmb1' al tipo di supporto di MFVideoFormat_MJPG.

  • Supporto dei metadati furigana aggiunto nell'origine MPEG-4 di Windows 8.

    L'origine MPEG-4 legge i metadati furigana da 'soal', 'soar', 'soaa', 'sonm' e 'soco'. IPropertyStore legge i metadati furigana tramite il set di PKEY corrispondenti.

    Nella tabella seguente viene illustrato il mapping tra il nome canonico della shell, la chiave della proprietà e l'ID casella/tag in formato di file MPEG-4.

    Campo Chiave della proprietà ID tag/casella
    Sistema. Musica. AlbumTitleSortOverride PKEY_Musica_AlbumTitleSortOverride soal
    Sistema. Musica. ArtistSortOverride PKEY_Musica_ArtistSortOverride librarsi
    Sistema. Musica. AlbumArtistSortOverride PKEY_Musica_AlbumArtistSortOverride soaa
    System.TitleSortOverride PKEY _TitleSortOverride sonm
    Sistema. Musica. ComposerSortOverride PKEY_Musica_ComposerSortOverride Soco

     

  • Supporto atom stereo 3D aggiunto nell'origine MPEG-4 di Windows 8.

  • Supporto AC3 e DD+ aggiunto nell'origine e nel sink MPEG-4 di Windows 8.

  • I file di dimensioni superiori a 4 GB sono supportati nel sink MPEG-4 di Windows 8 per MP4 non frammentato.

  • Lo scrubbing è stato ottimizzato nell'origine MPEG-4 di Windows 8.

    Per ridurre la latenza, le informazioni per i due fotogrammi chiave più vicini per una determinata posizione di ricerca vengono esposte tramite IMFSeekInfo::GetNearestKeyFrames. Poiché il fotogramma chiave non ha fotogrammi dipendenti, presenta il fotogramma dopo la decodifica di un solo fotogramma. Usare IMFGetService::GetService per ottenere questa interfaccia tramite l'origine multimediale, la pipeline o l'applicazione.

    Impostare rate su zero nell'origine MPEG-4. Quando la pipeline è in modalità di scrubbing, la velocità è zero.

  • SPS e PPS possono essere archiviati in dati di esempio nel sink MPEG-4.

    MF_MPEG4SINK_SPSPPS_PASSTHROUGH attributo nel sink MPEG-4 è definito per consentire il salvataggio di SPS e PPS insieme agli esempi di input (dati video H.264). Le clip mp4 prodotte sono riproducibili dall'origine MPEG-4 di Windows 7 e altre.

  • SPS e PPS possono essere estratti da esempi di input nel sink MPEG-4.

    Quando SPS e PPS non vengono impostati tramite MF_MT_MPEG_edizione StandardQUENCE_HEADER sul tipo di supporto di input del sink MPEG-4, il sink MPEG-4 tenterà di estrarre SPS e PPS dagli esempi di input. Il sink MPEG-4 ignora tutti gli esempi di input fino a quando non trova il primo SPS e PPS, perché tutti gli esempi di input senza SPS e PPS non sono decodificabili.

  • Le informazioni 3D nel record di configurazione AVC sono supportate per MP4 non frammentato.

  • La lunghezza NALU viene esposta per i campioni compressi H.264 per ottimizzare la decodifica DXVA H.264 VLD.

    I set di origine MPEG-4 MF_NALU_LENGTH_edizione Standard T sul tipo di supporto di output di MFVideoFormat_H264 o MFVideoFormat_h264. Imposta il BLOB di MF_NALU_LENGTH_INFORMATION in ogni esempio di output, con lunghezza NALU a quattro byte per diversi campioni compressi.

  • Supporto aggiunto per l'audio MPEG2 ADTS nell'origine MP4.

Requisiti

Requisito valore
Client minimo supportato
Windows 7 [solo app desktop]
Server minimo supportato
Windows Server 2008 R2 [solo app desktop]

Vedi anche

Origini multimediali e sink

Sink multimediali

Supporto MPEG-4 in Media Foundation

Formati multimediali supportati in Media Foundation