Bagaimana saya bisa memotong video dengan ffmpeg?

172

Saya memiliki file MP4 rekaman layar yang harus saya potong. Bagaimana saya bisa melakukan ini tanpa menggunakan alat mahal seperti Adobe Premier atau Final Cut? Saya lebih suka ffmpegkarena saya sudah menggunakannya sebelumnya.

stephenwade
sumber

Jawaban:

264

Gunakan cropfilter :

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

Di mana opsinya adalah sebagai berikut:

  • out_w adalah lebar dari persegi panjang keluaran
  • out_h adalah tinggi dari persegi panjang keluaran
  • xdan ytentukan sudut kiri atas dari persegi panjang keluaran

Gambar asli

gambar asli
Gambar 320x240 asli

Contoh 1

80x60

Untuk memotong bagian 80 × 60, mulai dari posisi (200, 100):

ffmpeg -i in.mp4 -filter:v "crop=80:60:200:100" -c:a copy out.mp4
  • Audio disalin stream dalam contoh ini, sehingga pengodean ulang dihindari.

Contoh 2

kuartal kanan bawah

Untuk memotong kuartal kanan bawah:

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

Ini sama dengan:

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

Yang sama dengan:

ffmpeg -i in.mp4 -filter:v "crop=240:120:240:120" -c:a copy out.mp4
  • Anda dapat merujuk ke ukuran gambar input dengan in_wdan in_hseperti yang ditunjukkan pada contoh pertama ini. Lebar dan tinggi keluaran juga dapat digunakan dengan out_wdan out_h.

Contoh 3

20 piksel dari atas, dan 20 dari bawah

Pangkas 20 piksel dari atas, dan 20 dari bawah:

 ffmpeg -i in.mp4 -filter:v "crop=in_w:in_h-40" -c:a copy out.mp4
  • Filter akan secara otomatis memusatkan pemangkasan jika xdan ydihilangkan seperti dalam contoh ini.

Pratinjau

Anda dapat mengambil krop (heh heh) dan mempratinjaunya langsung dengan ffplay:

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

Dengan cara ini Anda dapat bereksperimen dan menyesuaikan pemangkasan Anda tanpa perlu menyandikan, melihat, mengulangi.

Catatan

  • crop saring dokumentasi

  • Encoder default untuk MP4 adalah libx264(video H.264) atau mpeg4( video MPEG-4 Bagian 2) tergantung pada versi Anda ffmpeg. Lihat FFmpeg Wiki: H.264 Video Encoding Guide untuk info lebih lanjut.

  • Alih-alih memotong dan menyandikan ulang, pertimbangkan memotong saat pemutaran. Ini dimungkinkan dengan pemain mana pun yang layak digunakan.

  • Kuno ffmpegmembangun digunakan -croptop, -cropbottom, -cropleft, -croprightpilihan bukan cropfilter. Jika ini yang terjadi untuk Anda maka dapatkan yang modernffmpeg . Pengembangannya sangat aktif dan tidak ada alasan untuk menggunakan barang antik.

Geppettvs D'Constanzo
sumber
2
Ini berfungsi dengan 'avconv' sekarang.
Joce
Saya memiliki 1923x1080 dan ingin 1920x1080. Ini adalah pujian yang saya coba: /Users/kukodajanos/Workspace/ffmpeg -i /Users/kukodajanos/Desktop/video_640x480-2.mp4 -filter:v "crop=1920:1080:0:0" -c:a copy /Users/kukodajanos/Desktop/video_640x480-4.mp4tetapi film aslinya dikembalikan.
János
@ Joce JFYI avconv adalah bagian dari libav - garpu ffmpeg
andrybak
1
Layak untuk menyebutkan teknik ini (dengan cropfilter) mengkode ulang video, lihat stackoverflow.com/questions/33378548/… jika pengodean ulang penting bagi Anda
abernier
1
diedit untuk mengubah yang lama -filter:vke yang lebih baru dan lebih mudah untuk mengetik -vf. Tepuk tangan!
Penatua Geek