2013-05-06 23 views
6

Boy oranını aynı seviyede tutmak için boylarını 240 olarak ölçeklendirmek için bir grup videoyu toplu olarak işlemem gerekiyor. Neredeyse yapılan iş alır komut şöyledir:Libav filtreleri kullanarak bir videonun ölçeklendirilmesi hatası

$ avconv -threads 4 -ss 0.0 -i input.avi \ 
-map 0:0,0:0 -map 0:1,0:1 -vf "scale=-1:240" -y -f mpegts \ 
-async -1 -vcodec libx264 -vcodec libx264 -flags2 +fast \ 
-flags +loop -g 30 -bufsize 1024k \ 
-b 200k -bt 220k -qmax 48 -qmin 2 -r 20 -acodec libmp3lame \ 
-ab 44k -ar 44100 -ac 2 output.ts 

ilginç kısmı, gördüğünüz gibi, bu ölçekli çıkış genişliği çift sayıda olarak çıkıyor videolar çalışır -vf "scale=-1:240"

olduğunu . Aksi halde, aşağıdaki hata iletisini alırım:

[libx264 @ 0x7fc4f8821e00] width not divisible by 2 (341x240) 

Bunu nasıl aşabilirim?

Düzenleme

: bu link başına gelince, ben bir film çıkışı kullanarak çalıştı ama ortaya çıkan görüntü kalitesi gerçekten kötü.

Düzenleme # 2: Bu, numaralı yanlış bir şekilde işaretlenmiş değil. Bu soru diğerinden çok daha önce yayınlanmıştır.

+0

. Genellikle, daha az oy içeren soru, kopya olarak işaretlenir. – LordNeckbeard

+0

@LordNeckbeard Bu da mantıklı, ama yukarıdaki kutuda SO'nun kendi tanımıyla çelişiyor, özellikle - "çift olarak işaretlendi ... Bu soru önceden sorulmuş ve zaten bir cevabı vardır". –

+0

Evet, bu soruya birçok kullanıcı tarafından birçok kez sorulmuştur. İlk kim olduğunu tartışmak zaman kaybıdır. Çözüm, herkes için aynıdır: bir yan etki olarak, bazıları geçici sıraya bakılmaksızın kopya olarak işaretlenecektir. Daha da önemlisi: 1) İnsanlar soru sormadan önce arama yapmazlar. 2) İnsanlar programlama ile ilgisi olmayan konu dışı sorular soruyorlar: Yığın Taşması sadece programlama soruları içindir. – LordNeckbeard

cevap

8

Güncelleme; Şimdi kullanabileceğiniz:

-vf scale=-2:240 

Is there a good list of mp4 supported resolutions and a way to have ffmpeg calculate the width after modifying by set height ratio?


bağlantı aslında diyor ki: Eğer ölçek istiyorsanız doğru, bir çift sayıya yüksekliğini ölçekler

scale="854:trunc(ow/a/2)*2" 

genişliğinde bu deyimi kullanmalısınız:

Arkasında
-vf scale="trunc(oh*a/2)*2:240" 
#    ^
#    /
#  notice --- 

Matematik: o soru yaşlı değil gerçekten önemli bir taşıyıcı anlamına gelir çoğaltmak gelince

iw ow 
-- = -- 
ih oh 

ow = (iw * oh)/ih 
ow = oh * a 
+0

Bu kısaltmalar ne anlama geliyor? – Xeoncross

+0

@StevenPenny Bu kesinlikle doğru. Elbette en boy oranının çarpılması ve bölünmemesi gerekir. Teşekkürler –

İlgili konular