Ubah ukuran video dengan lebar berbeda menjadi rasio aspek menjaga ketinggian tetap dengan ffmpeg


17

Saya ingin mengonversi banyak file video ke video flash untuk situs web perusahaan kami. Saya memiliki persyaratan bahwa semua video harus dalam format 360p, jadi ukurannya adalah Nx360.

FFmpeg menggunakan -s argumen untuk menentukan resolusi target as W x H . Saya tidak tahu W idth, karena tergantung pada aspek rasio file sumber. Jika sumbernya 640x480, target akan menjadi 480x360. Jika sumbernya 848x480, targetnya adalah 636x360.

Apakah ada cara untuk melakukannya dengan beberapa saklar ffmpeg? Itu akan mempertahankan rasio aspek dan saya hanya akan menentukan ketinggian video target?

Saya dapat dengan mudah menyelesaikannya dengan membuat program yang akan meluncurkan ffprobe untuk mendapatkan ukuran video sumber, menghitung rasio aspek dan kemudian menghitung lebar baru.

Jawaban:


15

Anda dapat mencoba menambahkan filter video ini:

-vf "scale=-1:360" 

-1 dalam hal ini berarti variabel / tidak dikenal, sehingga filter ini mengubah ukuran video untuk mempertahankan rasio aspek input, menjaga 360 sebagai ketinggian.

Bagi saya ini mencapai hasil yang sama seperti yang Anda cari.



6

Belum memiliki cukup poin untuk mengomentari jawaban yang ada, tetapi ini mengikuti jawaban pengguna65600 dan melangkah lebih jauh ketika codec tertentu membutuhkan lebar / tinggi yang dapat dibagi 2 (misalnya libx264)

Saat Anda menggunakan -1 (variabel / tidak diketahui), itu dapat mengembalikan # ganjil. Untuk menjamin # genap, Anda harus menggunakan sesuatu seperti trunc(ow/a/2)*2, yang akan secara otomatis menghitung genap # terdekat sambil mempertahankan rasio aspek.

-vf "scale=trunc(ow/a/2)*2:360"

Sumber: https://ffmpeg.org/trac/ffmpeg/ticket/309


3

-vf "scale=trunc(ow/a/2)*2:360" tidak berfungsi karena kesalahan "referensi-sendiri".

Alih-alih, yang berikut ini berfungsi:

-vf "scale = -1: 360, scale = trunc (iw / 2) * 2: 360"

Referensi diri dengan demikian dihindari oleh dua skala berturut-turut, dan pembulatan dilakukan pada langkah kedua. Lucu bukan? :)


Skala filtergraph sederhana = -1: 480; scale = trunc (iw / 2) * 2: 480 'tidak memiliki tepat satu input dan output. Kesalahan saat membuka filter!
digitalPBK
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.