Hapus .mp4 bar hitam atas dan bawah video menggunakan ffmpeg

22

Saya baru mengenal ffmpeg dan saya telah mendengar bahwa ia memiliki filter untuk warna hitam. Saya ingin menghapus bilah hitam di bagian atas dan bawah video sehingga video akan dipotong ke video yang tersisa tanpa bilah hitam. Terima kasih:)


sumber
Windows? Instal WinFF. Ini akan memungkinkan Anda untuk mengetik nilai yang ingin Anda
potong

Jawaban:

38

FFmpeg cropdetect dan filter crop

1. Dapatkan parameter krop

cropdetect dapat digunakan untuk memberikan parameter untuk filter crop . Dalam contoh ini, 90 detik pertama dilewati dan 10 frame diproses:

$ ffmpeg -ss 90 -i input.mp4 -vframes 10 -vf cropdetect -f null -
...
[Parsed_cropdetect_0 @ 0x220cdc0] x1:0 x2:1279 y1:0 y2:719 w:1280 h:720 x:0 y:0 pts:215 t:0.215000 crop=1280:720:0:0
[Parsed_cropdetect_0 @ 0x220cdc0] x1:0 x2:1279 y1:0 y2:719 w:1280 h:720 x:0 y:0 pts:257 t:0.257000 crop=1280:720:0:0
[Parsed_cropdetect_0 @ 0x220cdc0] x1:0 x2:1279 y1:0 y2:719 w:1280 h:720 x:0 y:0 pts:299 t:0.299000 crop=1280:720:0:0

Jadi menurut cropdetect kita bisa menggunakan crop=1280:720:0:0.

2. Pratinjau dengan ffplay

$ ffplay -vf crop=1280:720:0:0 input.mp4

3. Encode ulang menggunakan filter potong

$ ffmpeg -i input.mp4 -vf crop=1280:720:0:0 -c:a copy output.mp4

Dalam contoh ini audio hanya disalin streaming (muxed) karena Anda mungkin tidak perlu menyandikan ulang.

Lihat juga


Pangkas saat pemutaran

Seperti yang Anda lihat di atas dengan ffplaycontoh, beberapa pemain memungkinkan Anda memotong saat pemutaran. Ini memiliki keunggulan:

  • Gratifikasi instan; tidak perlu disandikan ulang
  • Kualitasnya terjaga
llogan
sumber
Maaf tapi saya baru ke ffmpeg dan saya tidak mengerti bagian untuk menghapus bilah hitam di atas dan bawah dan mengubah ukuran video ke ukuran yang tersisa tanpa bilah hitam.
1
Apakah ada cara otomatis untuk menghapus bilah hitam atau saya harus selalu menggunakan nilai krop secara manual?
1
@rexhin Ketika Anda menjalankan cropdetect itu akan membuang banyak info di output konsol seperti yang ditunjukkan di atas. Ini benar-benar memberi Anda parameter pemangkasan aktual yang perlu Anda gunakan. Anda dapat mengotomatiskannya melalui skrip.
llogan
Wow, mengagumkan, itu berhasil. Tapi di mana kita meletakkan filter untuk hitam? Juga apa saja dua
Itu telah menghapus bilah hitam atas tetapi telah meninggalkan bilah hitam kecil di bagian bawah. Kenapa ini terjadi?
1

@LordNeckbeard jawabannya bagus. Saya akan merekomendasikannya dalam banyak kasus.

ffplay bekerja dengan baik dan mempratinjau dengan baik, tetapi versi ffmpeg yang saya gunakan kesulitan dengan audio dari video ini yang saya gunakan.

st:1 error, non monotone timestamps 

Saya akhirnya mengalami masalah dengan jawaban yang diajukan baik dengan -c:atidak didukung dengan versi yang saya jalankan dan dengan masalah dengan konversi bitrate dengan video yang saya gunakan.

Catatan: -c:adapat diganti dengan:-acodec

Solusi gratis alternatif termudah yang saya temukan adalah menggunakan rem tangan.

Autocrop menghapus bilah hitam tanpa banyak kesulitan.

Semoga itu bisa membantu.

phyatt
sumber