Dosya boyutu ffmpeg ile nasıl sınırlandırılır?


10

60 saniye uzunluğundaki bir videoyu hedef veya maksimum 10 MB boyutunda kodlamak istiyorum .

Bildiğim iki yaklaşım var. Biri FFMPEG-Wiki'de, diğeri de dokümantasyonda buldum. Ne yazık ki, hangi yöntemi kullanacağım hakkında bir açıklama bulamadım.

Bu yöntemlerden herhangi biri önerilir mi? Değilse, her yöntemin üst / alt tarafları nelerdir?

1) Bit hızını hesaplayın ve ffmpeg-wiki'de açıklandığı gibi videonun uzunluğuna uyacak şekilde ayarlayın

(10 MB * 8192 [MB'yi kilobit'e dönüştürür]) / 60 saniye = ~ 1365 kbits / s toplam bit hızı 1365k - 128k (istenen ses bit hızı) = 1237k video bit hızı

ffmpeg -y -i input -c:v copy -preset medium -b:v 1237k -pass 1 -c:a copy -b:a 128k -f mp4 /dev/null && \
ffmpeg -i input -c:v libx264 -preset medium -b:v 1237k -pass 2 -c:a libfdk_aac -b:a 128k output.mp4

2) -fs Parametreyi kullanın ve ffmpeg'in çözmesine izin verin.

ffmpeg -i input -c:v copy -c:a copy -preset medium -crf 23 -fs 10485760 output.mp4

1
İlk örneğinizde, ilk adım libx264olarak da kullanılmalıdır c:v. Örnekte , kullanıldığı fsiçin videonun kod dönüştürmesini yapmıyorsunuz -c:v copy. Yani, presetve crfayrıca herhangi bir etkisi yoktur.
Gyan

Bu benim için yardımcı oldu: stackoverflow.com/a/34547102/470749
Ryan

Yanıtlar:


11

fsOnun değerini vurur kez parametre kodlamak duracaktır. Dolayısıyla, çıktı 10MB15. saniyeyi kodlarken işarete çarparsa, çıktı dosyanızın süresi budur.

Dosyanın tamamının kodlandığından emin olmak ancak ayarlanan hedef boyutu geçmediğinden emin olmak için bit hızı yöntemini kullanın. Muxing yükünü ve diğer verileri hedef boyutta barındırmak için video bit hızınızı, örneğin% 1-2 oranında biraz daha düşük bir değere ayarlayın

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.