Container dan codec

Derek Herman
Derek Herman
Joe Medley
Joe Medley

Untuk mendukung beberapa browser, Anda harus menggunakan FFmpeg untuk mengonversi file .mov ke dua penampung yang berbeda: penampung MP4 dan penampung WebM. Dalam praktik sebenarnya, Anda mungkin akan menentukan codec secara bersamaan. Untuk saat ini, kita akan membiarkan FFmpeg menggunakan setelan default-nya.

Jika konsep ini baru bagi Anda, Anda harus membaca Dasar-dasar file media sebelum melanjutkan. Selain itu, jika Anda belum menginstal FFmpeg, baca Dasar-dasar aplikasi media untuk menyiapkannya dengan Docker.

Kita menggunakan penginstalan Docker yang disarankan dan file glocken.mov dari Menyiapkan file media untuk web yang ditambahkan di dalam direktori media. Kami menggunakan FFmpeg versi 4.3.2 untuk semua perintah di bagian ini.

Container

Pertama, kita perlu membuat dua penampung dari file .mov dengan ekstensi file .mp4 dan .webm dengan streaming audio dan video di dalam file. Tinjau Dasar-dasar file media untuk mengetahui informasi selengkapnya tentang penampung dan streaming jika Anda tidak mengetahui perbedaannya.

  1. MP4

    /media # ffmpeg -i glocken.mov glocken.mp4
    
  2. WebM

    /media # ffmpeg -i glocken.mov glocken.webm
    

WebM memerlukan waktu lebih lama untuk dibuat daripada MP4. Hal ini tidak mengejutkan jika Anda melihat hasilnya. Meskipun MP4 dikompresi menjadi sekitar 83% dari ukuran file asli, WebM dikompresi menjadi 78% dari ukuran asli, tetapi dapat jauh lebih kecil. Hasil Anda akan bervariasi. Perlu diperhatikan bahwa FFmpeg 4.2.2 menetapkan bitrate video default ke 200k dan di 4.3.2, bitrate default tidak ditetapkan. Jadi, video tersebut tidak lagi hanya4% salinan dari video asli. Anda dapat melihatnya sendiri menggunakan perintah bash ls -a di folder tempat file media Anda berada.

Contoh:

/media # ls -l
-rw-r--r-- 1 root  root  12080306 Mar 7 12:16 glocken.mov
-rwx------ 1 root  root  10106446 Mar 7 12:33 glocken.mp4
-rwx------ 1 root  root   9503301 Mar 7 18:30 glocken.webm

Untuk mendapatkan file kecil, Anda dapat melakukan hal berikut:

/media # ffmpeg -i glocken.mov -b:v 200k glocken.webm
...
frame=  300 fps=3.6 q=0.0 Lsize=     483kB time=00:00:10.01 bitrate= 395.0kbits/s speed=0.121x
video:359kB audio:117kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.356068%
/media # ls -l
-rw-r--r-- 1 root  root  12080306 Mar 7 12:16 glocken.mov
-rwx------ 1 root  root  10106446 Mar 7 12:33 glocken.mp4
-rwx------ 1 root  root    494497 Mar 7 18:45 glocken.webm

Periksa hasil kerja Anda

Untuk memverifikasi hasil Anda, gunakan FFmpeg dan Shaka Packager seperti yang telah ditunjukkan dalam Dasar-dasar Aplikasi Media:

/media # packager input=glocken.mp4 --dump_stream_info
/media # ffmpeg -i glocken.mp4

Codec

Berikutnya, codec. Seperti yang dinyatakan dalam Dasar-dasar file media, codec tidak sama dengan penampung (jenis file). Dua file dari jenis penampung yang sama dapat menyimpan data yang dikompresi menggunakan codec yang berbeda. Misalnya, format WebM memungkinkan audio dienkode menggunakan Vorbis atau Opus. Untuk mengubah codec, kita menggunakan FFmpeg. Misalnya, perintah ini menghasilkan file .mkv dengan codec audio vorbis dan codec video av1.

/media # ffmpeg -i glocken.mov -c:a vorbis -c:v av1 glocken.mkv

Dalam contoh ini, flag -c:a dan -c:v masing-masing digunakan untuk menentukan codec audio dan video.

Halaman Konversi media mencantumkan perintah yang diperlukan untuk mengonversi codec. Tabel di bawah merangkum library yang digunakan di FFmpeg untuk melakukan konversi codec untuk file WebM dan MP4. Berikut adalah format yang direkomendasikan untuk DASH dan HLS.

Video

Codec Perluasan Koleksi
av1 WebM, mkv libaom-av1
h264 MP4 libx264
vp9 WebM libvpx-vp9

Audio

Codec Perluasan Koleksi
aac MP4 aac
opus WebM libopus
vorbis WebM libvorbis

Selanjutnya, kami akan menunjukkan cara mengubah bitrate file yang baru dibuat.