Kapsayıcılar ve codec'ler

Derek Herman
Derek Herman
Joe Medley
Joe Medley

Birden çok tarayıcıyı desteklemek için .mov dosyanızı bir MP4 kapsayıcısı ve bir WebM kapsayıcısı olmak üzere iki farklı kapsayıcıya dönüştürmek için FFmpeg kullanmanız gerekir. Gerçek uygulamada, büyük olasılıkla aynı anda bir codec de belirtirsiniz. Şimdilik, FFmpeg'in varsayılan ayarlarını kullanmasına izin veriyoruz.

Bu kavramlar yeniyse ilerlemeden önce Medya dosyalarıyla ilgili temel bilgileri okumalısınız. Ayrıca, FFmpeg yüklü değilse Docker ile ayarlamak için Medya uygulamasıyla ilgili temel bilgiler başlıklı makaleyi okuyun.

Önerilen Docker kurulumunu ve media dizinine eklenen Medya dosyalarını web için hazırlama bölümündeki glocken.mov dosyasını kullanıyoruz. Bu bölümdeki tüm komutlar için FFmpeg 4.3.2 sürümünü kullandık.

Container'lar

İlk olarak, .mov dosyasından .mp4 ve .webm dosya uzantısına sahip iki kapsayıcı oluşturmamız gerekir. Bu dosyanın içinde hem ses hem de video akışı olması gerekir. Kapsayıcı ve akışlar arasındaki farkları bilmiyorsanız kapsayıcılar ve akışlar hakkında daha fazla bilgi edinmek için Medya dosyası ile ilgili temel bilgiler başlıklı makaleyi inceleyin.

  1. MP4

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

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

WebM'nin oluşturulması, MP4'e kıyasla daha uzun sürer. Sonuçlara baktığınızda bu durum şaşırtıcı değildir. MP4, orijinal dosyanın boyutunun yaklaşık 83%'üne kadar sıkıştırılırken WebM, orijinal boyutun 78%'üne kadar sıkıştırılır ancak çok daha küçük olabilir. Sonuçlar değişiklik gösterir. FFmpeg 4.2.2'te varsayılan video bit hızının 200k olarak ayarlandığını ve 4.3.2'de varsayılan bit hızı ayarlanmadığını belirtmek önemlidir. Bu nedenle video artık orijinal videonun4% bir kopyası değildir. Medya dosyalarınızın bulunduğu klasördeki ls -a bash komutunu kullanarak bunu kendiniz de görebilirsiniz.

Örneğin:

/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

Küçük bir dosya almak için aşağıdakileri yapmanız gerekir:

/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

Çalışmanızı kontrol etme

Sonuçlarınızı doğrulamak için Medya uygulamasıyla ilgili temel bilgiler bölümünde gösterildiği gibi FFmpeg ve Shaka Packager'ı kullanın:

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

Codec'ler

Ardından codec. Medya dosyası ile ilgili temel bilgiler bölümünde belirtildiği gibi, codec kapsayıcı (dosya türü) ile aynı değildir. Aynı kapsayıcı türüne sahip iki dosya, farklı codec'ler kullanılarak sıkıştırılmış veriler içerebilir. Örneğin, WebM biçimi sesin Vorbis veya Opus kullanılarak kodlanmasına olanak tanır. Kodeğiciyi değiştirmek için FFmpeg'i kullanırız. Örneğin, bu komut vorbis ses codec'i ve av1 video codec'i içeren bir .mkv dosyası oluşturur.

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

Bu örnekte, -c:a işareti ve -c:v sırasıyla ses ve video codec'lerini belirtmek içindir.

Medya dönüştürme sayfasında, codec'leri dönüştürmek için gereken komutları listeler. Aşağıdaki tablolarda, WebM ve MP4 dosyaları için codec dönüşümlerini gerçekleştirmek üzere FFmpeg'de kullanılan kitaplıklar özetlenmektedir. Bunlar sırasıyla DASH ve HLS için önerilen biçimlerdir.

Video

Codec Uzantı Kitaplık
av1 WebM, mkv libaom-av1
h264 MP4 libx264
vp9 WebM libvpx-vp9

Ses

Codec Uzantı Kitaplık
aac MP4 aac
Opus WebM libopus
vorbis WebM libvorbis

Birazdan, yeni oluşturulan dosyalarınızın bit hızını nasıl değiştireceğinizi göstereceğiz.