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 0x810429AAB
sini 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 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 .
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.
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 .
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 (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:
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.
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.
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.
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).
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
libavcodec
dan libavformat
pustaka 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