Apa itu Codec (mis. DivX?), Dan bagaimana perbedaannya dari Format File (misalnya MPG)?

95

Saya sangat bingung ... apa perbedaan antara codec audio / video (yang ternyata adalah singkatan untuk "encoder / decoder", seperti bagaimana "modem" benar-benar "modulator / demodulator") dan audio / format video?
(Apakah saya bahkan menggunakan terminologi yang benar?)

yaitu: Apa perbedaan antara mengatakan sesuatu adalah "MPEG-4" dan mengatakan sesuatu menggunakan codec "DivX"? Mengapa Windows Media Player terkadang menjalankan .mpgfile, dan terkadang tidak?

Juga, yang mana dari yang berikut ini adalah codec, mana yang merupakan format file, dan mana yang bukan?

  • MOV Quicktime
  • MPEG (1, 2, 3, 4)
  • WMV
  • FFmpeg
  • AVC
  • Xvid
  • DivX (apa bedanya dengan palindrome-nya, Xvid?)
  • H.264
Mehrdad
sumber
2
Melihat pertanyaan saya sendiri 6 tahun kemudian dan yang bisa saya pikirkan adalah "bagaimana Anda tidak tahu ini ?!"
Mehrdad
1
Kita semua mulai dari suatu tempat. ;)
Hashim

Jawaban:

146

Beberapa definisi utama:

  • Codec (misalnya, H.264, HEVC, VP9) hanya bertanggung jawab untuk bagian video atau audio, dan satu atau lebih codec dapat digabungkan ke dalam wadah.
  • Wadah (mis. MP4, MKV) bertanggung jawab untuk menyatukannya dan ini juga yang biasanya Anda buka di media player pilihan Anda.
  • Encoder tertentu (misalnya, x264, libvpx) bertanggung jawab untuk mengubah aliran input menjadi bitstream yang sesuai dengan codec. Seringkali ada beberapa encoders untuk satu codec tertentu.

Seperti yang Anda lihat, kami harus menjelaskan beberapa hal di sini.

Apa itu codec?

Sebuah codec adalah singkatan encoder / decoder, yang pada dasarnya hanya berarti sebagai berikut: Data yang dihasilkan oleh encoder selalu dapat diterjemahkan oleh decoder yang tepat. Ini berlaku untuk video, audio, tetapi Anda juga dapat berpikir tentang kriptografi (pembuat enkode memerlukan dekoder yang sesuai untuk menampilkan pesan terenkripsi).

Saat ini, ketika video codec ditentukan, lembaga yang mengambil bagian di dalamnya biasanya hanya menentukan sintaks standar. Sebagai contoh, mereka akan mengatakan: "Format bitstream harus seperti ini", "Di 0x810429AABsini akan diterjemahkan ke dalam", dll. Seringkali mereka menyediakan encoder dan decoder referensi, tetapi bagaimana encoder kemudian ditulis untuk mencocokkan dengan format sepenuhnya terserah produsen.

Ini adalah alasan mengapa Anda akan menemukan begitu banyak encoders untuk codec yang sama, dan beberapa di antaranya bahkan komersial.

Contoh kasus - H.264

Sebelum kita mencampuradukkan terminologi, mari kita ambil contoh. Pertimbangkan kasus untuk H.264 . Nama standarnya adalah H.264 - itu bukan nama pembuat kode yang sebenarnya. Mainconcept adalah encoder komersial yang sangat baik, sedangkan x264 adalah yang gratis dan open source. Keduanya mengklaim memberikan kualitas yang baik, tentu saja.

Fakta bahwa Anda dapat mengoptimalkan pengodean membuat kompetisi di sini. Kedua encoders akan memberikan bitstream standar yang selalu dapat didekodekan oleh decoder yang kompatibel dengan H.264.

Untuk meringkas

Jadi, secara keseluruhan, katakan saja bahwa pembuat enkode akan:

  • ambil bingkai video
  • menghasilkan bitstream yang valid

Bitstream ini kemudian multiplexing ke dalam wadah.

Dekoder akan:

  • ambil bitstream yang valid
  • merekonstruksi bingkai video darinya

Keduanya sesuai dengan standar codec. Itu saja!


Codec saat ini

Saat ini, Anda mungkin hanya akan menemukan video yang dikodekan dengan codec yang akan saya sebutkan di bawah ini. Menariknya, hampir semuanya dibuat oleh Motion Picture Experts Group (MPEG). Tetapi ada beberapa codec lain yang bebas royalti, seperti yang dibuat oleh Google atau Alliance for Open Media, yang merupakan pesaing dari standar MPEG.

Perhatikan bahwa "MPEG" dapat merujuk ke codec dan kontainer, seperti yang akan Anda lihat di bawah. Ini menambah kebingungan, tetapi hanya tahu bahwa "MPEG" saja tidak berarti apa-apa, misalnya "Saya memiliki file dalam format MPEG" sangat ambigu ".

MPEG-2

MPEG-2 sudah cukup tua. Rilis publik pertama adalah dari tahun 1996. Video MPEG-2 sebagian besar digunakan untuk DVD dan siaran TV, misalnya DVB-T atau satelit, dan aplikasi lama di mana kompatibilitas penting. Video MPEG-2 sebagian besar ditemukan dalam wadah .MPG .

MPEG-4 Bagian 2

Ini mungkin salah satu yang sebagian besar digunakan untuk menyandikan video untuk web pada pertengahan 2000-an, tetapi saat ini telah digantikan. Ini menawarkan kualitas yang baik pada ukuran file praktis, yang berarti bahwa Anda dapat membakar seluruh film berdurasi 90 menit ke CD 600 MB (sedangkan dengan MPEG-2 Anda akan membutuhkan DVD, lihat jawaban saya di sini ). Itu tidak berfungsi dengan baik untuk konten HD atau 4K lagi.

Beberapa encoders yang menghasilkan video MPEG-4 Part 2 adalah DivX , XviD ripoff bersumber terbuka , dan Nero Digital .

Video MPEG-4 Bagian 2 sebagian besar datang dalam wadah AVI , tetapi MP4 juga sering terlihat.

MPEG-4 Bagian 10 / AVC / H.264

Ini juga dikenal sebagai MPEG-4 Advanced Video Coding (AVC) atau H.264 ; itu adalah codec yang paling banyak digunakan saat ini. Ini menawarkan kualitas yang baik pada ukuran file kecil dan karenanya sangat cocok untuk semua jenis video untuk Internet atau perangkat seluler. Anda akan menemukan H.264 di hampir setiap aplikasi modern, dari ponsel ke camcorder. Pada disk Blu-ray, video sekarang dikodekan dalam H.264.

Beberapa encoders untuk itu adalah: x264 , NVENC (dari NVIDIA), Mainconcept . Video sebagian besar datang dalam wadah MP4 , MKV atau MOV .

HEVC / H.265

Juga disebut MPEG-H Bagian 2, ini adalah penerus MPEG-4 Bagian 10 / AVC / H.264. Ini ditujukan untuk resolusi yang lebih tinggi (hingga 8K ) dan dapat menawarkan kinerja pengkodean hingga 50% lebih tinggi (dalam hal kualitas vs bitrate) dibandingkan dengan H.264 (lihat makalah ini , misalnya).

Standar ini diterbitkan pada 2013, dan perlahan-lahan, codec mulai digunakan semakin banyak, misalnya, untuk IPTV atau transmisi video online. HEVC juga digunakan oleh Apple untuk menyimpan video dan gambar (menggunakan HEIF ) di iOS. Namun, fakta bahwa ada beberapa kumpulan paten yang terkait dengan HEVC memiliki banyak perusahaan (hampir semua kecuali Apple) beralih ke alternatif bebas royalti. HEVC juga tidak didukung secara native oleh semua browser, membuatnya tidak dapat digunakan untuk streaming web.

Encoder paling terkenal adalah x265 . Ada juga NVENC . Video biasanya datang dalam wadah MP4 .

VP9 dan AV1

VP9 (penerus VP8) adalah codec yang terutama dikembangkan oleh Google. Ini terbuka dan bebas royalti, dan diterapkan di banyak browser . Kualitasnya hampir sama baiknya dengan HEVC, dan kadang-kadang bahkan lebih baik (lihat makalah ini oleh Netflix). VP9 adalah apa yang Anda dapatkan ketika Anda menonton YouTube di browser yang mendukungnya.

VP9 dapat dikodekan dengan libvpx encoder, dan itu sering kali datang dalam wadah WebM atau MKV .

Beberapa perusahaan berkumpul untuk membentuk pesaing yang lebih kuat untuk HEVC - tetapi sebagai alternatif bebas royalti. AV1 akan menjadi penerus VP9, ​​dan didasarkan pada apa yang seharusnya menjadi VP10. Ini didukung oleh Alliance for Open Media (didirikan oleh Amazon, Cisco, Google, Intel, Microsoft, Mozilla, dan Netflix). Baca lebih lanjut di sini .

The libaom encoder dapat digunakan untuk menghasilkan bitstream AV1, tetapi masih eksperimental.


Apa itu format (wadah)?

Sampai sekarang kami hanya menjelaskan "bitstream" mentah, yang pada dasarnya hanya data video yang benar-benar mentah. Anda sebenarnya bisa melanjutkan dan menonton video menggunakan bitstream mentah. Tetapi dalam kebanyakan kasus itu tidak cukup atau tidak praktis.

Karena itu, Anda perlu membungkus video dalam wadah. Ada beberapa alasan mengapa:

  • Mungkin Anda ingin audio bersama dengan videonya
  • Mungkin Anda ingin melewati bagian tertentu dalam video (seperti, "buka 1: 32: 20.12")
  • Audio dan video harus disinkronkan dengan sempurna
  • Video mungkin perlu ditransmisikan melalui jaringan yang andal dan dibagi menjadi beberapa paket sebelumnya
  • Video bahkan mungkin dikirim melalui jaringan yang hilang (seperti 3G) dan dibagi menjadi beberapa paket sebelumnya

Untuk semua alasan itu, format wadah diciptakan, beberapa sederhana, beberapa lebih canggih. Apa yang mereka semua lakukan adalah "membungkus" bitstream video ke bitstream lain.

Wadah akan menyinkronkan frame video dan audio sesuai dengan Cap Waktu Presentasi (PTS) mereka, yang memastikan mereka ditampilkan pada waktu yang sama persis. Itu juga akan mengurus menambahkan informasi untuk server streaming, jika perlu, sehingga server streaming tahu kapan harus mengirim bagian mana dari file.

Mari kita lihat beberapa wadah populer.


Wadah populer

Anda akan menemukan video sebagian besar dibungkus dalam wadah berikut. Ada juga yang kurang populer, tetapi seperti yang saya katakan, sebagian besar adalah:

AVI

Audio Video Interleave - ini adalah wadah paling dasar, hanya ada di sana untuk interleave audio dan video. Itu ditulis pada tahun 1992 dan masih digunakan sampai sekarang, tetapi dianggap warisan, jadi jangan menggunakannya lagi.

MP4

juga dikenal sebagai MPEG-4 Bagian 14 dan didasarkan pada format file QuickTime. Ini adalah format masuk untuk video H.264, tetapi juga membungkus HEVC, MPEG-4 Bagian 2 dan MPEG-2.

Wadah ini mungkin hanya membungkus audio, itulah sebabnya Anda akan menemukan begitu banyak file .mp4 yang bukan video melainkan audio yang disandikan AAC , juga dalam file .m4a (hanya ekstensi yang berbeda). Ekstensi .m4v biasanya diambil untuk bitstream video.

MKV dan WebM

Matroska Video (MKV) adalah format file bersumber terbuka dan gratis yang sering ditemukan saat ini, karena pada dasarnya mendukung setiap codec, dari H.264 ke VP9, ​​dan tentu saja juga banyak codec audio.

WebM didasarkan pada MKV dan terutama digunakan untuk video VP9 dan audio Opus - ini adalah wadah pilihan untuk video streaming web saat codec ini digunakan.

Ogg

Wadah Ogg adalah wadah pilihan untuk codec video Theora (dan codec audio Vorbis ), juga dibuat oleh Xiph.Org Foundation. Ini juga gratis dan open source (seperti halnya codec).

FLV

Format video Flash dibuat oleh Adobe, untuk digunakan dalam aplikasi streaming mereka. Itu tidak banyak digunakan lagi, karena cara streaming dilakukan telah berubah secara signifikan selama beberapa tahun terakhir.


Codec dan format populer

Juga, yang mana dari yang berikut ini adalah codec, mana yang merupakan format file, dan mana yang bukan?

  • Quicktime MOV : .mov adalah ekstensi file untuk QuickTime File Format , yang merupakan wadah yang dibuat oleh Apple. Wadah ini kemudian diadaptasi untuk MP4. Itu dapat membawa semua jenis codec. Quicktime sebenarnya adalah kerangka kerja seluruh media, itu tidak benar-benar menentukan codec itu sendiri sejauh yang saya ketahui.
  • MPEG (1, 2, 3, 4) : Standar yang ditentukan oleh Grup Ahli Gambar Bergerak. Lihat posting saya di atas untuk detailnya.
  • WMV : Windows Media Video. Ini sebenarnya adalah codec yang dibungkus dalam wadah Format Sistem Lanjutan , yang menggunakan ekstensi .wmv lagi. Aneh, tapi memang begitu.
  • FFmpeg : Ini bukan codec atau wadah. Ini adalah pustaka alat video yang juga memungkinkan konversi antara berbagai codec dan wadah. FFmpeg bergantung pada sumber terbuka libavcodecdan libavformatpustaka untuk membuat codec dan kontainer, masing-masing. Sebagian besar alat video yang Anda temukan hari ini didasarkan padanya.
  • AVC : Sinonim untuk MPEG-4 Bagian 10 atau H.264.
  • DivX : Jenis lain dari encoder untuk video MPEG-4 Bagian 2.
  • Xvid : Satu jenis encoder untuk video MPEG-4 Bagian 2. Itu hanya open source, versi gratis DivX, yang tentu saja menimbulkan beberapa kontroversi.
  • H.264 : Sinonim untuk MPEG-4 Bagian 10 atau AVC.

Di samping catatan:

Apakah saya bahkan menggunakan terminologi yang benar?

Saya kira sekali akan lebih memilih untuk menggunakan "codec" dan "wadah" khusus daripada "format" untuk menghindari kesalahpahaman. Suatu format secara teoritis dapat berupa apa saja, karena baik codec maupun wadah menentukan format (yaitu bagaimana data harus diwakili).

Yang sedang berkata, terminologi FFmpeg akan menggunakan "format" untuk wadah. Ini juga karena perbedaan antara:

  • libavcodec, perpustakaan untuk encoding / decoding
  • libavformat, perpustakaan untuk wadah
slhck
sumber
33
Nah, itu yang bisa disebut menjawab pertanyaan. Sudah selesai dilakukan dengan baik.
Francesco
1
Jawaban yang bagus, tetapi Anda melewatkan format wadah Ogg.
Ignacio Vazquez-Abrams
7
Ini adalah jawaban paling menakjubkan yang pernah saya lihat. Terima kasih banyak atas penjelasannya! :)
Mehrdad
@Mehrdad Senang saya bisa menjelaskan masalah ini. Terima kasih :)
slhck
1
Kadang-kadang Anda berharap dapat melakukan banyak upvotes pada jawaban :)
Dolf Andringa
3

Secara umum 'format' media benar-benar sebuah wadah, berisi aliran audio (dari beberapa codec audio) dan aliran video (dari beberapa codec video) dan kadang-kadang informasi tambahan. kebanyakan 'file' Anda memiliki tipe file berdasarkan wadah dan bukan codec

FFmpeg bukan wadah atau codec - ini adalah kumpulan perpustakaan serbaguna, codec dan perangkat lunak untuk konversi file yang mendasari banyak konverter dan pemutar musik.

H.264 / AVC dan xvid / divx adalah codec

AVI (file divx / xvid), mp4, mpeg adalah wadah.

Saya tidak yakin tentang quicktime mov - .mov adalah sebuah wadah, quicktime adalah sebuah codec.

Journeyman Geek
sumber
Tidak ada codec "Quicktime". Quicktime adalah kerangka kerja multimedia, termasuk wadah .mov, perangkat lunak untuk menyandikan, mendekode dan menampilkan berbagai codec, serta keingintahuan lain seperti Quicktime VR.
stib
1

ada codec dan wadah (format file). Codec menjelaskan bagaimana data dikodekan / didekodekan. Yang lain menjelaskan bagaimana data yang dikodekan ditempatkan di dalam file.

Sebagian besar pemutar media mendukung beberapa jenis codec dan wadah. Ini membingungkan, jadi saya sarankan Anda membaca referensi saya untuk informasi lebih lanjut

uSlackr
sumber
-1

Format adalah nama yang diberikan untuk jenis format file tertentu dan tipe kompresi (sebagian besar video dikompresi untuk mempertahankan ukurannya), dan codec adalah apa yang sebenarnya dapat memampatkannya, membacanya dan menerjemahkannya ke dalam video yang Anda lihat dengan mendekompresinya . Dengan kata lain, satu adalah jenis file, tetapi yang lainnya adalah perangkat lunak.

Kami biasanya merujuk ke sebagian besar video dengan nama format, jadi Quicktime MOV, MPEG, dan WMV adalah format.

FFmpeg (saya belum pernah mendengar ini) tampaknya menjadi nama perangkat lunak untuk mengubah berbagai format menjadi format lain.

AVC dan H.264 adalah sama, dan merupakan format untuk penyandian video HD.

DivX adalah codec yang dijual secara komersial.

Xvid adalah codec untuk MPEG-4.

KCotreau
sumber
1
ffmpeg adalah backend untuk 99% dari konverter FOSS.
Journeyman Geek
Jawaban ini salah. Dari 7 kalimat hanya angka 6 dan 7 yang benar, bahkan yang kurang detail.
jiggunjer