Bir videoyu kırparak ve yeniden boyutlandırarak sabit ekran boyutuna dönüştürme


14

Bunu kendim anlamaya çalıştım, ama sayısız seçenek beni şaşırtıyor.

Herhangi bir gelen videoyu sabit ekran boyutuna dönüştürmek için ideal olarak ya ffmpegda mencoder(ya da başka bir şey, ama çalıştığımı bildiğim bu ikisi) kullanmak istiyorum.

Video daha geniş veya çok kısaysa, videoyu ortada kırpın. Doğru boyutta değilse, tam olarak sabit ekran boyutunu yapmak için yeniden boyutlandırın veya yeniden boyutlandırın.

İhtiyacım olan kesin şey, bir MP3 ses parçasına sahip bir XVid AVI'de 720x480.

Maksimum çözünürlüğe nasıl yeniden boyutlandırılacağını gösteren birçok sayfa buldum, ancak videonun tam olarak bu çözünürlükte olması gerekiyor (ekstra parçalar kırpılmış, siyah çubuklar yok).

Birisi bana komut satırını çalıştırmamı söyleyebilir - ya da en azından bana o yolun bir kısmını / çoğunu getirebilir mi? Birden fazla komut satırı olması gerekiyorsa (çözünürlüğü almak için X'i çalıştırın, bu hesaplamayı yapın ve sonra o hesaplamanın çıktısıyla Y'yi çalıştırın) Bunu komut dosyası yapabilirim.

Yanıtlar:


22

Böyle bir şey her vaka için uygun parametrelerle çalışmalıdır:

Not: Orijinal yanıt bu bağlantıda gönderildi: Bir videoyu ffmpeg ile nasıl kırpabilirim? orijinal olarak benim tarafımdan gönderilen ve ffmpeg'in en son sürümlerindeki en yeni seçeneklere güncellemek için birkaç kez düzenlenmiştir. Slhck'e çok teşekkürler , Jonathan. , Anton Rudeshko , LordNeckbeard ve gelecekteki koruyucular .


FFmpeg'in son sürümlerinde şu cropfiltreyi kullanın :

ffmpeg -i in.mp4 -filter:v "crop=out_w:out_h:x:y" out.mp4

Seçenekler aşağıdaki gibidir:

  • out_w çıktı dikdörtgenin genişliği
  • out_h çıktı dikdörtgenin yüksekliği
  • xve yçıktı dikdörtgeninin sol üst köşesini belirtin

Gerçek görüntü

gerçek görüntü
Orijinal 320x240 görüntü

örnek 1

80x60

Konumdan (200, 100) başlayarak 80 × 60 kesiti kırpmak için:

ffmpeg -i in.mp4 -filter:v "crop=80:60:200:100" -c:a copy out.mp4

ÖRNEK 2

sağ alt çeyrek

Sağ alt çeyreği kırpmak için:

ffmpeg -i in.mp4 -filter:v "crop=in_w/2:in_h/2:in_w/2:in_h/2" -c:a copy out.mp4

Bu aynı:

ffmpeg -i in.mp4 -filter:v "crop=320/2:240/2:320/2:240/2" -c:a copy out.mp4

Hangisi ile aynı:

ffmpeg -i in.mp4 -filter:v "crop=240:120:240:120" -c:a copy out.mp4
  • Bu ilk örnekte gösterildiği gibi in_wve ile giriş görüntü boyutuna başvurabilirsiniz in_h. Çıktı genişliği ve yüksekliği out_wve ile de kullanılabilir out_h.

ÖRNEK 3

20 piksel üstten ve 20 piksel alttan

Üstten 20 piksel, alttan 20 piksel kırpın:

 ffmpeg -i in.mp4 -filter:v "crop=in_w:in_h-40" -c:a copy out.mp4
  • Filtre, otomatik olarak kırpma merkezi olacak xve ybu örnekte olduğu gibi bu ihmal edilmiştir.

Önizleme

Bir mahsul (heh heh) alabilir ve şununla canlı olarak önizleyebilirsiniz ffplay:

ffplay -i input -vf "crop=in_w:in_h-40"

Bu şekilde, kodlama, görüntüleme, tekrarlama gerekmeden kırpma işleminizi deneyebilir ve ayarlayabilirsiniz.

notlar

  • crop filtre dokümanları

  • MP4 için varsayılan kodlayıcı , derlemenize bağlı olarak libx264(H.264 video) veya mpeg4(MPEG-4 Part 2 video) şeklindedir ffmpeg. Daha fazla bilgi için bkz. FFmpeg Wiki: H.264 Video Kodlama Kılavuzu .

  • Kırpma ve yeniden kodlama yerine, oynatma sırasında kırpmayı düşünün. Bu, kullanmaya değer herhangi bir oyuncu ile mümkündür.

  • Antik ffmpegkullanılan kurar -croptop, -cropbottom, -cropleft, -croprightyerine seçenekler cropfiltresi. Eğer durum buysa, modern olunffmpeg . Geliştirme çok aktif ve antika kullanmak için bir neden yok.


İçin ekstra puan önizledikten ile ffplayhangi kullanarak yapar ffmpegpratikte video ekran boyutu çalışılabilir kırpmak için.
SpeedCoder5
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.