Đây là phương pháp sử dụng các phiên bản hiện tại của FFmpeg. Nó dựa vào bộ giải mã concat không thay đổi kích thước PTS của các đầu vào sau tệp đầu tiên, mà chỉ áp dụng một giá trị bù cố định. Giả sử bạn có luồng 30 khung hình / giây với thời gian 15360
(điển hình của đầu ra FFmpeg). Điều đó có nghĩa là khung 0
có PTS 0
và khung 30
có PTS 15360
. Điều này sẽ trở thành luồng 45 khung hình / giây nếu chúng ta có thể thay đổi thời gian thành 23040
mà không ảnh hưởng đến các giá trị PTS.
Về cơ bản, đó là những gì phương pháp dưới đây làm.
1 . Xác định các thuộc tính nguồn.
Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1171 kb/s,
30 fps, 30 tbr, 15360 tbn (default)
Bạn muốn lưu ý các thuộc tính nguồn, đặc biệt là độ phân giải và tbn
.
2a . (Tùy chọn) Thay đổi thời gian thành một cái gì đó thuận tiện, để làm cho việc tính toán đơn giản hơn.
ffmpeg -i in.mp4 -c copy -an -video_track_timescale 30 in-v30.mp4
Điều này giúp chúng tôi
Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1171 kb/s, \
30 fps, 30 tbr, 30 tbn (default
Nếu bạn thực hiện bước này, khoảng thời gian mới sẽ bằng hoặc bội số nguyên của tốc độ khung hình ban đầu.
2b . Tính toán thời gian cần thiết, để cho tốc độ khung hình đích x
, PTS của khung # x
trong nguồn phải có cùng giá trị như mới tbn
. Nếu bạn thực hiện bước 2a, điều này rất dễ dàng và nó chỉ đơn giản là tốc độ khung hình mới. Vì vậy, đối với fps mục tiêu 45
, mới tbn
nên 45
.
3 . Tạo video giả.
ffmpeg -f lavfi -i color=s=1280x720:r=45:d=1 -profile:v main -video_track_timescale 45 0.mp4
Tất cả các thuộc tính phải giống như độ phân giải, cấu hình H.264, định dạng pixel, số refs..vv để có kết quả tốt nhất.
4 Liên kết các video.
Đầu tiên tạo một tệp văn bản
file '0.mp4'
file 'in-v30.mp4'
Sau đó, concat
ffmpeg -f concat -i list.txt -c copy -video_track_timescale 45 45fps.mp4
Tệp đầu ra sẽ có video thứ 2 phát ở tốc độ 45 khung hình / giây.
5 . Bây giờ, tách ra khỏi preroll giả
ffmpeg -ss 1.1 -i 45fps.mp4 -c copy -avoid_negative_ts make_zero in45.mp4
và bạn có
Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1757 kb/s, \
45 fps, 45 tbr, 11520 tbn (default)
Tôi đã nói điều này đã được chia sẻ!
-r
không tương thích với sao chép luồng và không có bộ lọc dòng bit để thay đổi tốc độ khung hình.