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 frame 0
memiliki PTS 0
dan frame 30
memiliki PTS 15360
. Ini akan menjadi aliran 45 fps jika kita dapat mengubah skala waktu 23040
tanpa mempengaruhi nilai PTS.
Pada dasarnya, itulah yang dilakukan metode di bawah ini.
1 . Identifikasi properti sumber.
Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1171 kb/s,
30 fps, 30 tbr, 15360 tbn (default)
Anda ingin mencatat properti sumber, terutama resolusi dan tbn
.
2a . (Opsional) Ubah skala waktu menjadi sesuatu yang nyaman, untuk membuat perhitungan lebih sederhana.
ffmpeg -i in.mp4 -c copy -an -video_track_timescale 30 in-v30.mp4
Ini membuat kita
Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1171 kb/s, \
30 fps, 30 tbr, 30 tbn (default
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 baru tbn
. Jika Anda melakukan langkah 2a, ini sangat mudah dan ini hanyalah framerate baru. Jadi, untuk fps target 45
, baru tbn
harus 45
.
3 . Buat video dummy.
ffmpeg -f lavfi -i color=s=1280x720:r=45:d=1 -profile:v main -video_track_timescale 45 0.mp4
Semua properti harus sama seperti resolusi, profil H.264, format piksel, jumlah referensi .. dll untuk hasil terbaik.
4 Concat videonya.
Pertama buat file teks
file '0.mp4'
file 'in-v30.mp4'
Kemudian, konser itu
ffmpeg -f concat -i list.txt -c copy -video_track_timescale 45 45fps.mp4
File output akan membuat video ke-2 diputar pada 45 fps.
5 . Sekarang, bersihkan preroll boneka
ffmpeg -ss 1.1 -i 45fps.mp4 -c copy -avoid_negative_ts make_zero in45.mp4
dan kamu punya
Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1757 kb/s, \
45 fps, 45 tbr, 11520 tbn (default)
Saya memang mengatakan ini berbelit-belit!
-r
tidak kompatibel dengan salinan aliran, dan tidak ada filter bitstream untuk mengubah framerate.