İşte FFmpeg'in güncel sürümlerini kullanan yöntem. Concat demuxer'ın ilk dosyadan sonra girişlerin PTS'sini yeniden ölçeklememesine değil, sadece sabit bir ofset uygulamasına dayanır. Diyelim ki bir zaman ölçeği olan 15360
(fFmpeg çıkışına özgü) 30 fps akışınız var . Bu demektir ki çerçeve 0
PTS sahiptir 0
ve çerçeve 30
PTS sahiptir 15360
. 23040
PTS değerlerini etkilemeden zaman ölçeğini değiştirebilirsek, bu 45 fps akışı olur .
Esasen, aşağıdaki yöntem budur.
1 . Kaynak özelliklerini tanımlayın.
Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1171 kb/s,
30 fps, 30 tbr, 15360 tbn (default)
Kaynak özelliklerini, özellikle de çözünürlüğü ve tbn
.
2a . (İsteğe bağlı) Hesaplamaları daha basit hale getirmek için zaman ölçeğini uygun bir şeye değiştirin.
ffmpeg -i in.mp4 -c copy -an -video_track_timescale 30 in-v30.mp4
Bu bizi
Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1171 kb/s, \
30 fps, 30 tbr, 30 tbn (default
Bu adımı uygularsanız, yeni zaman ölçeği orijinal kare hızının eşit veya katları olmalıdır.
2b . Hedef zaman x
aralığı x
için kaynaktaki # karesinin PTS'sinin yenisiyle aynı değere sahip olması için gereken zaman ölçeğini hesaplayın tbn
. Adım 2a'yı gerçekleştirdiyseniz, bu çok kolaydır ve sadece yeni kare hızıdır. Yani, hedef fps için 45
yeni tbn
olmalı 45
.
3 . Sahte video oluşturun.
ffmpeg -f lavfi -i color=s=1280x720:r=45:d=1 -profile:v main -video_track_timescale 45 0.mp4
En iyi sonuçlar için tüm özellikler çözünürlük, H.264 profili, piksel biçimi, refs sayısı vb. İle aynı olmalıdır.
4 Videolara eşlik edin.
Önce bir metin dosyası oluşturun
file '0.mp4'
file 'in-v30.mp4'
Sonra concat
ffmpeg -f concat -i list.txt -c copy -video_track_timescale 45 45fps.mp4
Çıktı dosyasında 45 fps hızında oynatılan 2. video olacaktır.
5 . Şimdi, kukla önyargıyı böl
ffmpeg -ss 1.1 -i 45fps.mp4 -c copy -avoid_negative_ts make_zero in45.mp4
ve sen sahipsin
Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1757 kb/s, \
45 fps, 45 tbr, 11520 tbn (default)
Bunun kıvrık olduğunu söylemiştim!
-r
akış kopyasıyla uyumlu değil ve kare hızını değiştirmek için bit akışı filtreleri yok.