Saya memiliki beberapa rekaman 4K 3840x2160 dalam format MP4 yang harus saya bawa ke 1080p. Saya mencoba berlari
ffmpeg -i orig.mp4 -vf scale=1920:1080 smaller.mp4
tetapi hasilnya adalah kualitas yang sangat buruk, dengan seluruh gambar yang terdiri dari "kotak" persegi seolah-olah saya memperbesar 4: 1.
Ini adalah output dari menjalankan perintah ini:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'origs/P1000003.MP4':
Metadata:
major_brand : mp42
minor_version : 1
compatible_brands: mp42avc1
creation_time : 2015-02-19 17:10:38
Duration: 00:05:14.48, start: 0.000000, bitrate: 95903 kb/s
Stream #0.0(und): Video: h264 (High), yuvj420p, 3840x2160 [PAR 1:1 DAR 16:9], 95792 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
Metadata:
creation_time : 2015-02-19 17:10:38
Stream #0.1(und): Audio: aac, 48000 Hz, stereo, s16, 125 kb/s
Metadata:
creation_time : 2015-02-19 17:10:38
Incompatible pixel format 'yuvj420p' for codec 'mpeg4', auto-selecting format 'yuv420p'
[buffer @ 0x22a3420] w:3840 h:2160 pixfmt:yuvj420p
[scale @ 0x22a3ce0] w:3840 h:2160 fmt:yuvj420p -> w:1920 h:1080 fmt:yuv420p flags:0x4
Output #0, mp4, to '1-short.mp4':
Metadata:
major_brand : mp42
minor_version : 1
compatible_brands: mp42avc1
creation_time : 2015-02-19 17:10:38
encoder : Lavf53.21.1
Stream #0.0(und): Video: mpeg4, yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 25 tbn, 25 tbc
Metadata:
creation_time : 2015-02-19 17:10:38
Stream #0.1(und): Audio: libvo_aacenc, 48000 Hz, stereo, s16, 200 kb/s
Metadata:
creation_time : 2015-02-19 17:10:38
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
Press ctrl-c to stop encoding
frame= 125 fps= 6 q=31.0 Lsize= 968kB time=5.00 bitrate=1586.7kbits/s
video:842kB audio:123kB global headers:0kB muxing overhead 0.421047%
Saya tahu dari pengalaman bahwa ffmpeg adalah alat yang sangat baik, jadi saya harus mengacaukan opsi / parameter entah bagaimana ...
Bagaimana saya bisa melakukan ini?
ffmpeg
file-formats
conversion
full-hd
4k
lara michaels
sumber
sumber
-t 10
untuk menghasilkan 10 detik. Mengapa Anda ingin turun? Apa gunanya kasing untuk keluaran berskala Anda? Info ini akan membantu saya memberikan jawaban yang lebih akurat.-c:a copy
, karena Anda tidak ingin atau perlu menyandikan ulang aliran audio. Gunakan-map 0
untuk menyalin metadata bab apa pun, atau hal-hal lain. (ffmpeg hanya membutuhkan 1 vid + 1 aud secara default.)-sws_flags lanczos+print_info
akan menggunakan algo scaling yang lebih baik daripada default (menurut saya bilinear). jawaban stlb mencakup bagian penyandian video dari proses.scale=1920:-2:flags=lanczos
,. Saya juga akan menyebutkan-2
skala untuk jawaban saya yang tidak ada. Bagi mereka yang tidak tahu Anda dapat memasukkan-2
lebar atau tinggi, dan itu akan secara otomatis memberikan nilai yang benar sambil mempertahankan rasio aspek dan membuat nilai dapat dibagi 2 (diperlukan oleh libx264 untuk output yuv420p).Jawaban:
Pengaturan default untuk ffmpeg berkualitas sangat rendah, dan karena Anda tidak menentukan codec atau parameter kualitas apa pun, itu hanya menggunakan default (Saya tidak tahu mengapa devs tidak memperbaikinya karena menghasilkan banyak pertanyaan di forum dimana mana).Sunting : standarnya sekarang cukup waras. Dengan ffmpeg terbaru, Anda tidak perlu menentukan apa pun selain file input dan output untuk mencapai hasil yang bisa digunakan. Anda tentu saja dapat menyesuaikan keinginan hati Anda.
Coba tambahkan
-c:v libx264 -crf 20 -preset slow
ke perintah.-c:v libx264
memintanya untuk menggunakan libx264 encoder,crf 20
menggunakan quantiser Faktor Tingkat Konstan (yang secara paradoksal berarti laju bit variabel, tetapi kualitas konstan) dengan nilai 20 (kualitas cukup bagus; lebih rendah kualitas lebih baik / file lebih besar, lebih tinggi crappier / lebih kecil),slow
ditetapkan adalah cara pintas untuk sekelompok pengaturan encoder yang berarti menempatkan usaha sedikit lebih ke dalamnya dari default (media).Anda dapat mengubah pengaturan ini, lihat panduan pengkodean h.264 untuk instruksi tentang kenop yang ingin diputar.
Dan jika Anda menggunakan audio apa adanya, tambahkan
c:a copy
. Itu akan melakukan salinan langsung dari aliran audio tanpa pengodean ulang.sumber
mpeg4
menghasilkan video MPEG-4 Bagian 2, dan default untuk itu lebih waras selama masa jayanya (seperti untuk 320x240, dll).Gunakan avconv jika Anda mau:
sumber