MPEG-4 File Sink

Sink file MPEG-4 membuat file MP4. Untuk informasi selengkapnya tentang format file MP4, lihat dokumen standar berikut:

  • ISO/IEC 14496-12: Teknologi informasi -- Pengkodean objek audio-visual -- Bagian 12: Format File Media Dasar ISO
  • ISO/IEC 14496-14: Teknologi informasi -- Pengkodean objek audio-visual -- Bagian 14: Format File MP4

Catatan

(Sumber daya ini mungkin tidak tersedia di beberapa bahasa dan negara.)

 

Sink file MPEG-4 tidak merangkum fungsi pengodean.

Untuk membuat sink file MPEG-4, panggil fungsi MFCreateMPEG4MediaSink. Sink file MPEG-4 mengekspos antarmuka berikut melalui QueryInterface:

Kotak Deskripsi Sampel

MP4 adalah format kontainer yang dapat diperluas. Spesifikasi MP4 tidak menentukan struktur tetap untuk menjelaskan jenis media dalam kontainer MP4. Sebaliknya, ini mendefinisikan hierarki objek yang memungkinkan struktur kustom didefinisikan untuk setiap format. Deskripsi format disimpan dalam kotak deskripsi sampel ('stsd') untuk setiap aliran. Kotak deskripsi sampel berisi daftar entri sampel. Untuk setiap entri sampel, kode 4-byte, mirip dengan FOURCC, menentukan struktur format.

Sink File MPEG-4 dapat menghasilkan kotak deskripsi sampel untuk format berikut:

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

Untuk format lain, kotak deskripsi sampel harus disediakan dalam jenis media untuk setiap aliran. Untuk menentukan kotak deskripsi sampel, atur atribut berikut pada jenis media:

Atribut Deskripsi
MF_MT_MPEG4_SAMPLE_DESCRIPTION Berisi kotak deskripsi sampel sebagai blob biner.
MF_MT_MPEG4_CURRENT_SAMPLE_ENTRY Menentukan entri sampel mana dalam kotak deskripsi sampel yang saat ini aktif. (Opsional.)
Saat ini, nilainya harus nol.

 

Dalam beberapa kasus, tidak dimungkinkan untuk membuat kotak deskripsi sampel sampai semua data telah dikodekan. Misalnya, informasi seperti laju bit rata-rata mungkin tidak diketahui sebelumnya. Dalam hal ini, Anda dapat memperbarui jenis media dengan menggunakan antarmuka IMFMediaTypeHandler pada sink file MPEG-4. Ini harus dilakukan sebelum sink media diselesaikan.

Biasanya jenis media dibuat oleh encoder upstream. Encoder dapat menghasilkan jenis media baru selama streaming, melalui perubahan format dinamis. Untuk informasi selengkapnya, lihat Perubahan Format Dinamis.

H.264/AVC Video

Sink file MPEG-4 mendukung versi aliran AVC yang memiliki aliran video dasar, dengan kumpulan parameter urutan (SPS) dan rangkaian parameter gambar (PPS) NALUs yang terkandung dalam kotak deskripsi sampel, seperti yang didefinisikan dalam ISO/IEC 14496 bagian 15 bagian 5.1. Sink file tidak mendukung metode alternatif untuk menyimpan NALUs SPS/PPS sebagai aliran elementary set parameter terpisah.

Sink file MPEG-4 dapat menghasilkan kotak deskripsi sampel, tetapi harus disediakan dengan NALUs SPS dan PPS. Tentukan informasi ini dalam jenis media dengan mengatur atribut MF_MT_MPEG_SEQUENCE_HEADER. Nilai atribut adalah header urutan H.264. Header urutan harus terdiri dari SPS dan PPS NALUs yang dibatasi oleh kode mulai 3-byte atau 4-byte.

Secara opsional, saat mengonfigurasi sink file, Anda dapat menghilangkan atribut MF_MT_MPEG_SEQUENCE_HEADER dari jenis media awal. Dalam hal ini, Anda harus memperbarui jenis media nanti untuk menyertakan header urutan.

Sink file MPEG-4 memiliki persyaratan berikut untuk bitstream AVC:

  • Bitstream harus sesuai dengan spesifikasi format H.264 Annex B. Secara khusus, NALUs harus dibatasi dengan kode mulai 3 byte atau 4 byte.
  • Sampel media harus berisi semua iringan dan NALUs data yang sesuai dengan satu waktu presentasi.
  • Saat menulis bingkai B ke dalam file MP4, Anda harus mengatur stempel waktu presentasi dan stempel waktu dekode. Jika stream memiliki bingkai B dan tanda waktu dekode tidak diatur, penulis MP4 akan melihat jangka waktu mundur dan akan menghilangkan bingkai.

AAC Audio

Untuk audio AAC, sink file MPEG-4 dapat menghasilkan kotak deskripsi sampel untuk subjenis berikut:

  • MFAudioFormat_AAC
  • MEDIASUBTYPE_RAW_AAC1

Untuk informasi selengkapnya tentang subjenis ini, lihat Jenis Media AAC.

Untuk subjenis MFAudioFormat_AAC, jenis media secara opsional berisi atribut MF_MT_USER_DATA. Jika ada, atribut ini bagian dari struktur HEAACWAVEINFO yang muncul setelah struktur WAVEFORMATEX (yaitu, setelah anggota wfx). Ini diikuti oleh data AudioSpecificConfig(), seperti yang didefinisikan oleh ISO/IEC 14496-3. Jika atribut MF_MT_USER_DATA tidak ada, aliran diasumsikan sebagai profil AAC Low Complexity (LC), dan sink file MPEG-4 menghasilkan kotak deskripsi sampel yang sesuai.

Untuk subjenis MEDIASUBTYPE_RAW_AAC1, sink media harus berisi atribut MF_MT_USER_DATA, dan atribut harus berisi data AudioSpecificConfig().

Sink file MPEG-4 membuat varian MPEG-4 dari kotak deskripsi sampel AAC, menggunakan entri sampel 'mp4a' dengan objectTypeIndication = 0x40. Ini tidak menggunakan jenis objek MPEG-2.

MP3 Audio

Untuk audio MP3, sink file MPEG-4 dapat menghasilkan kotak deskripsi sampel dari jenis media audio standar. (Lihat Tipe Media Audio.)

Sink file MPEG-4 membuat varian MPEG-4 dari kotak deskripsi sampel MP3, menggunakan entri sampel 'mp4a' dengan objectTypeIndication = 0x6b untuk audio MPEG-1.

Batasan

  • Ukuran maksimum file yang ditulis adalah 4 GB. Di Windows 8, file yang besar dari 4 GBGB didukung.
  • Sink file MPEG-4 tidak mendukung daftar edit (kotak 'edt' dan 'elst').

Pembaruan Windows 8 untuk sumber dan sink MPEG-4

  • Dukungan baca dan tulis rotasi ditambahkan di sumber dan sink Windows 8 MPEG-4. Ini tidak didukung di sumber dan sink Windows 7 MPEG-4.

    Sumber MPEG-4 membaca sudut rotasi untuk trek video aktif sebagai jumlah sudut rotasi dari 'mvhd' dan dari 'tkhd'.

    Sink Microsoft MPEG-4 menulis sudut rotasi dalam 'tkhd' tetapi menulis matriks 0 derajat (identitas) dalam 'mvhd'. Catatan, sink Microsoft MPEG-4 hanya mendukung satu trek video.

    IPropertyStore membaca sudut rotasi hanya untuk trek video pertama sebagai jumlah sudut rotasi dari 'mvhd' dan dari 'tkhd'.

    IPropertyStore menulis sudut rotasi hanya untuk trek video pertama dalam 'tkhd' setelah sudut rotasi disesuaikan sesuai dengan sudut rotasi di 'mvhd', jika ada.

  • Fragmen film ('moof') didukung di sumber dan sink Windows 8 MPEG-4, tetapi 'mfra' tidak.

  • H.263 didukung di sumber Windows 8 MPEG-4.

    Sumber MPEG-4 sekarang memetakan dua fourcc 'h263' dan 's263' dalam format file MPEG-4 ke jenis media MFVideoFormat_H263.

  • Lebih banyak dukungan fourcc ditambahkan untuk MJPEG di sumber Windows 8 MPEG-4.

    Sumber MPEG-4 memetakan foucc 'dmb1' ke jenis media MFVideoFormat_MJPG.

  • Dukungan metadata Furigana ditambahkan di sumber Windows 8 MPEG-4.

    Sumber MPEG-4 membaca metadata Furigana dari 'soal', 'soar', 'soaa', 'sonm', dan 'soco'. IPropertyStore membaca metadata Furigana melalui kumpulan PKEY yang sesuai.

    Tabel berikut menunjukkan pemetaan antara nama kanonis shell, kunci properti, dan ID kotak/tag dalam format file MPEG-4.

    Bidang Kunci Properti ID Tag/Kotak
    System.Music.AlbumTitleSortOverride PKEY_Music_AlbumTitleSortOverride soal
    System.Music.ArtistSortOverride PKEY_Music_ArtistSortOverride soar
    System.Music.AlbumArtistSortOverride PKEY_Music_AlbumArtistSortOverride soaa
    System.TitleSortOverride _TitleSortOverride PKEY sonm
    System.Music.ComposerSortOverride PKEY_Music_ComposerSortOverride Soco

     

  • Dukungan atom 3D stereo ditambahkan di sumber Windows 8 MPEG-4.

  • Dukungan AC3 dan DD+ ditambahkan di sumber dan sink Windows 8 MPEG-4.

  • File yang lebih besar dari 4 GB didukung di sink Windows 8 MPEG-4 untuk MP4 non-fragmental.

  • Scrubbing telah dioptimalkan di sumber Windows 8 MPEG-4.

    Untuk mengurangi latensi, informasi untuk dua bingkai kunci terdekat untuk posisi pencarian tertentu diekspos melalui IMFSeekInfo::GetNearestKeyFrames. Karena bingkai kunci tidak memiliki bingkai dependen, bingkai disajikan setelah mendekode hanya satu bingkai. Gunakan IMFGetService::GetService untuk mendapatkan antarmuka ini melalui sumber media, alur, atau aplikasi.

    Atur laju ke nol di sumber MPEG-4. Ketika alur dalam mode menggosok, tarifnya adalah nol.

  • SPS dan PPS dapat disimpan dalam data sampel di sink MPEG-4.

    atribut MF_MPEG4SINK_SPSPPS_PASSTHROUGH pada sink MPEG-4 didefinisikan untuk memungkinkan SPS dan PPS disimpan bersama dengan sampel input (data video H.264). Klip mp4 yang diproduksi dapat dimainkan oleh sumber Windows 7 MPEG-4 dan lainnya.

  • SPS dan PPS dapat diekstrak dari sampel input di sink MPEG-4.

    Ketika SPS dan PPS tidak diatur melalui MF_MT_MPEG_SEQUENCE_HEADER pada jenis media input sink MPEG-4, sink MPEG-4 akan mencoba mengekstrak SPS dan PPS dari sampel input. Sink MPEG-4 mengabaikan sampel input apa pun sampai menemukan SPS dan PPS pertama, karena semua sampel input tanpa SPS dan PPS tidak dapat didekodekan.

  • Informasi 3D dalam rekaman konfigurasi AVC didukung untuk MP4 non-fragmental.

  • Panjang NALU diekspos untuk sampel terkompresi H.264 untuk mengoptimalkan dekode H.264 VLD DXVA.

    Set sumber MPEG-4 MF_NALU_LENGTH_SET pada jenis media output MFVideoFormat_H264 atau MFVideoFormat_h264. Ini mengatur blob MF_NALU_LENGTH_INFORMATION pada setiap sampel output, dengan panjang NALU empat byte untuk NALU yang berbeda dalam satu sampel terkompresi.

  • Dukungan ditambahkan untuk audio MPEG2 ADTS di sumber MP4.

Persyaratan

Persyaratan Value
Klien minimum yang didukung
Windows 7 [hanya aplikasi desktop]
Server minimum yang didukung
Windows Server 2008 R2 [hanya aplikasi desktop]

Baca juga

Sumber dan Sink Media

Sink Media

Dukungan MPEG-4 di Media Foundation

Format Media yang Didukung di Media Foundation