Saya punya video mkv (h264) yaitu 23.976 fps (24000/1001) tapi saya ingin mengonversinya menjadi 25fps tanpa memasukkan ulang dan kehilangan kualitas. Saya tahu mkvmerge dapat melakukannya (dengan opsi --default-durasi '0: 25fps') tetapi saya ingin melakukannya secara langsung dari ffmpeg jika memungkinkan. Menurut dokumen, ini seharusnya berfungsi:
ffmpeg -i input.mkv -r 25 -vcodec copy output.mkv
tetapi ketika saya menjalankannya saya hanya mendapatkan fps video yang sama. Apa metode yang benar untuk melakukannya (jika ada) di ffmpeg?
-r
tidak kompatibel dengan salinan aliran, dan tidak ada filter bitstream untuk mengubah framerate.Jawaban:
Inilah metode menggunakan versi FFmpeg saat ini. Itu bergantung pada demuxer konat tidak men-rescaling PTS input setelah file pertama, tetapi hanya menerapkan offset tetap. Katakanlah Anda memiliki aliran 30 fps dengan skala waktu
15360
(khas dari output FFmpeg). Itu berarti frame0
memiliki PTS0
dan frame30
memiliki PTS15360
. Ini akan menjadi aliran 45 fps jika kita dapat mengubah skala waktu23040
tanpa mempengaruhi nilai PTS.Pada dasarnya, itulah yang dilakukan metode di bawah ini.
1 . Identifikasi properti sumber.
Anda ingin mencatat properti sumber, terutama resolusi dan
tbn
.2a . (Opsional) Ubah skala waktu menjadi sesuatu yang nyaman, untuk membuat perhitungan lebih sederhana.
Ini membuat kita
Jika Anda melakukan langkah ini, skala waktu baru harus sama atau kelipatan integral dari framerate asli.
2b . Hitung skala waktu yang dibutuhkan, sehingga untuk target framerate
x
, PTS dari frame #x
dalam sumber harus memiliki nilai yang sama dengan yang barutbn
. Jika Anda melakukan langkah 2a, ini sangat mudah dan ini hanyalah framerate baru. Jadi, untuk fps target45
, barutbn
harus45
.3 . Buat video dummy.
Semua properti harus sama seperti resolusi, profil H.264, format piksel, jumlah referensi .. dll untuk hasil terbaik.
4 Concat videonya.
Pertama buat file teks
Kemudian, konser itu
File output akan membuat video ke-2 diputar pada 45 fps.
5 . Sekarang, bersihkan preroll boneka
dan kamu punya
Saya memang mengatakan ini berbelit-belit!
sumber