Cara mengubah ukuran video agar lebih kecil dengan FFmpeg

103

Apakah mungkin untuk mengubah ukuran video saya agar lebih kecil dengan FFmpeg?

Saya memiliki dimensi video asli 1024x576, sekarang saya ingin mengubah ukuran video menjadi 720x480 untuk memenuhi persyaratan.

Bagaimana saya bisa melakukan ini?

Alan
sumber
ffmpegmungkin sudah ditinggalkan, lihat di sini dan di sini
gila tentang rapi
13
@nuttyaboutnatty Pesan "usang" hanya berlaku untuk ", mati, palsu ffmpeg" lama dari garpu Libav, bukan ffmpegdari FFmpeg yang dikembalikan pada 15,04.
Logan

Jawaban:

165

Contoh paling mendasar adalah ini:

ffmpeg -i input.avi -s 720x480 -c:a copy output.mkv

Menggunakan satu scalefilter yang akan memberikan lebih banyak fleksibilitas:

ffmpeg -i input.avi -filter:v scale=720:-1 -c:a copy output.mkv

Ini -1akan memberitahu ffmpeg untuk secara otomatis memilih ketinggian yang benar dalam kaitannya dengan lebar yang disediakan untuk mempertahankan rasio aspek. -1dapat juga digunakan untuk lebar jika Anda memberikan tinggi yang diberikan.


Salah satu kelemahan dari skala ketika menggunakan libx264adalah bahwa encoder ini memerlukan bahkan nilai-nilai dan skala dapat secara otomatis memilih nilai aneh yang mengakibatkan kesalahan: width or height not divisible by 2. Anda dapat menentukan skala untuk memilih nilai genap untuk ketinggian tertentu (720 dalam contoh ini):

scale="trunc(oh*a/2)*2:720"

... atau lebar tertentu (1280 dalam contoh ini):

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

Perhatikan bahwa build ffmpeg Anda bisa mengeluhkan tidak mengenali -catau -filteropsi. Mungkin juga tidak mendukung scale. Dalam hal ini Anda harus menggunakan ffmpeg yang lebih baru, yang dapat Anda unduh sebagai build statis, atau kompilasi sendiri .

jimhark
sumber
1
Saya mencoba ffmpeg -i output.mkv -filter:v scale=720:-1 -acodec copy -threads 12 output_shrink.mkv(dalam versi ffmpeg 0.8.6-6: 0.8.6-0ubuntu0.12.10.1) tetapi mendapatkan kesalahanUnrecognized option 'filter:v'
doug65536
6
Setelah menggali halaman manual untuk ffmpeg beberapa kali saya menemukan bahwa alih-alih -filter:v, opsi tampaknya telah diubah menjadi -vf.
doug65536
2
@ doug65536 -filter:vdan -vfkeduanya baik-baik saja. Versi Ubuntu yang Anda gunakan rusak dan ketinggalan zaman — ini bukan versi FFmpeg ffmpeg, tetapi biner yang disediakan oleh Libav (garpu FFmpeg) dengan nama yang sama.
slhck
1
@ MightyPork mungkin build ffmpeg Anda sudah usang - masalah apa yang terjadi? Bagaimanapun, ini benar-benar membantu saya (dengan ffmpeg version 2.4.10) mengurangi ukuran beberapa video besar untuk membebaskan ruang - terima kasih!
Wilf
4
'-c' adalah kependekan dari -codec, ': a' menentukan aliran audio, 'salin' menentukan salinan codec, yang menyalin aliran (dalam hal ini audio) tanpa reencoding. Pada dasarnya stream audio akan melewati. Ini biasa terjadi ketika Anda hanya memanipulasi aliran video.
jimhark
14

Saya menggunakan perintah berikut untuk melakukan rescaling untuk video dan gambar. Untuk lebar dan tinggi tetap -

ffmpeg -i input.avi -vf scale="720:480" output.avi

dan jika Anda ingin mempertahankan rasio aspek, beri tinggi sebagai -1 dan itu akan secara otomatis mengubah ukuran berdasarkan lebar -

ffmpeg -i input.avi -vf scale="720:-1" output.avi

Jika Anda ingin skala berdasarkan ukuran input misalnya. katakanlah kurangi lebar / tinggi setengah yang bisa Anda lakukan-

ffmpeg -i input.avi -vf scale="iw/1:ih/2" output.avi

CATATAN :

iw : input width
ih : input height

Build statis dapat diunduh dari - https://johnvansickle.com/ffmpeg/

Dokumentasi: https://ffmpeg.org/ffmpeg.html#filter_005foption

Aniket Thakur
sumber
Tidak bekerja Terjebak di handler_name: Sound Handle
Rushi M Thakker
Saya mendapat kualitas video yang buruk dengan perintah ini. Jauh lebih baik jika saya membuat output.mp4, bukan avi. Jadi masalah ekstensi.
sekrett