Videoyu ffmpeg / avconv ile WebM'ye dönüştürme


18

İken benim ev videoları boyutunu optimize çalışırken ben Xubuntu üzerinde Pitivi kullanarak bir test olarak WebM bazılarını dönüştürdü. Boyut farkı önemlidir. Sonuçta elde edilen webm dosyası orijinal dosyanın sadece% 10'u kadarken, resim kalitesi benim için hemen hemen aynı görünüyor.

Ben de avconvbunu komut dosyası kullanarak dönüşüm yapmaya çalıştım , ancak ortaya çıkan dosya gerçekten berbat görünüyor. Pitivi render ayarlarına baktıktan sonra bazı parametreler denedim: avconv -i $1 -q 5 -qmin 0 -qmax 63 ${1%.*}.webmama kalite hala bok gibi görünüyor, bu yüzden eksik / bazı yanlış parametreler kullanıyorum gibi görünüyor. Birisi bir h264 filmi bir web'e dönüştürmek ve Pitivi ile aynı kaliteyi elde etmek için hangi parametrelerin kullanılacağını biliyor mu?

Bunlar Pitivi'deki ayarlar: Pitivi Projesi'nin oluşturulması Web'e oluşturma (html5 video) codec yapılandırması

Yanıtlar:


53

Not: Bu bilgiler VP9 kodlamasındaki FFmpeg Wiki'yi temel alır . Daha fazla bilgi için lütfen bu makaleye bakın - sürekli olarak korunacak ve genişletilecektir. En iyi sonuç için en son sürümünü kullanmalısınız ffmpegtarafından kendi web sitesinden indirerek (statik yapı yeterli olacaktır; içerdiği libvps-vp9kodlayıcı).

Değişken bit hızı

VBR kodlama size en iyi toplam kaliteyi sağlar, çünkü kodlayıcı bir çerçeveye kaç bit atayacağını serbestçe seçebilir. Videoları sabit bit hızı akışı için hazırlamıyorsanız bu modu seçin.

Seçenek 1: Sabit kalitede kodlama

Genellikle, belirli bir dosya boyutunu hedeflemek istemiyorsanız, en yüksek kaliteye yol açacağı için bit hızının serbestçe değişmesine izin vermelisiniz. Bunu, bit hızını 0 ve sabit hız faktörünü ( CRF ) hedef kalite seviyesine ayarlayarak yapabilirsiniz :

ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 output.webm

CRF değeri 0-63 arasında olabilir. Düşük değerler daha iyi kalite demektir. Önerilen değerler 15–35 arasındadır ve 1080p HD video için 31'i önerilir. Google'ın bu konuda daha fazla bilgi içeren bir kılavuzu vardır .

Seçenek 2: Hedef bit hızı ile iki geçişli kodlama

Dosyanızın belirli bir hedef bit hızına veya dosya boyutuna sahip olmasını istiyorsanız, hızı belirtmeniz ve iki geçişli kodlama kullanmanız gerekir (bu da en iyi kalite dağıtımını sağlar). Burada 1080p içerik için yeterli olan 5 MBit / s seçiyoruz.

ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 5M -pass 1 -f webm /dev/null && \
ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 5M -pass 2 output.webm

Windows kullanıcıları kullanmaya gerek NULyerine /dev/nullve ^yerine \.

Sabit bit hızı

Her şeyden önce, libvpx sabit bit hızı ve değişken bit hızı kodlama modları sunar . Sabit bit hızından mümkün olduğunca kaçınılmalıdır (belirli bir dosya boyutunu veya akış senaryosunu hedeflemediğiniz sürece), çünkü dosya boyutu başına ortalama kalite daha kötü olacaktır. Yine de, sizin için başka bir şey çalışmazsa, örneğin 1 MBit / sn ile sabit bir bit hızı ayarlamayı deneyebilirsiniz:

ffmpeg -i input.mp4 -c:v libvpx-vp9 -minrate 5M -maxrate 5M -b:v 5M output.webm

Çıktıya bakın ve bit hızını beğeninize (veya dosya boyutu kısıtlamalarınıza) arttırın veya azaltın. Örneğin, 500Kveya 5Met cetera kullanabilirsiniz.

Sen belirtmeniz gerekir -minrate, -maxrateve bit hızı -b:vkodlayıcı için sırayla CBR kullanmak. Hepsinin aynı değere sahip olması gerekir - aksi takdirde bunun yerine farklı bir hedef bit hızı seçer ve VBR kodlaması yapar, ancak kötü kalitede.

Ses

VP9 kodlaması için mevcut ses codec bileşeni Opus'tur. FFmpeg varsayılan olarak gerekli kodlayıcıyı ve seçeneklerini seçecektir. Açık bir şekilde ayarlamak istiyorsanız -c:a libopus, bunu da yapabilirsiniz. Daha fazla seçenek için libopusbelgelere bakın .


4
Bu, şu anda, tüm internette VP8 kodlamak için en iyi rehberdir. Aferin, keşke bir kez daha oylamayı isterdim!
evilsoup

@evilsoup Teşekkür ederim. Hala değiştiriyorum ve daha sonra FFmpeg wiki'sine yeni bir sayfa ekleyeceğim.
slhck

Bu gerçekten harika bir cevap! Şimdi videomun neden her zaman aynı düşük kalitede olduğunu anlıyorum, çünkü aslında her zaman varsayılan 256 kBit / s kullanıyordum. Çok teşekkür ederim!
jeroen

Orijinal mp4 ile dönüştürülen webm arasındaki boyut farkları nelerdi?
switz

1
@ Sadece kılavuzu güncelledim - biraz modası geçmiş olduğunu fark ettim. Kullanışlı bulduğuna sevindim.
slhck
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.