Ich versuche, ein Video zu erstellen, dessen Zeitstempel (vom Beginn des Films an) auf dem Frame angezeigt wird. Ich mache das mit dem folgenden:
ffmpeg -loop 1 -framerate 30 -t 3600 -i /path/to/my.png -s 1280x720 -vf drawtext="fontfile=/path/to/my.ttf:fontcolor=white: timecode='00\:00\:00;00': r='30000/1001': text='': fontsize=148: x=190: y=260:" -c:v libx264 -vb 1000k -pix_fmt yuv420p -preset fast -f mp4 -r 30 -y out.mp4
Das erste Bild beginnt mit dem Zeitstempel 00:00:00;00
und das nächste 00:00:00;01
und so weiter, bis wir zur 1-Minuten-Marke gelangen, wo die Zeitstempel von 00:00:59;29
bis gehen 00:01:00;02
, was anscheinend das Überspringen von zwei Bildern bedeutet. Egal, wie viel ich mit der Eingabe- und der Ausgabe-Framerate herumspiele, ich erhalte die gleichen Ergebnisse. Ich habe es -r 29.97
an beiden Orten versucht .
edit: die volle Ausgabe -
ffmpeg version 2.1.3 Copyright (c) 2000-2013 the FFmpeg developers
built on Feb 11 2014 20:59:04 with Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
configuration: --prefix=/usr/local/Cellar/ffmpeg/2.1.3 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid --enable-libfreetype --enable-libvpx --enable-librtmp --enable-ffplay
libavutil 52. 48.101 / 52. 48.101
libavcodec 55. 39.101 / 55. 39.101
libavformat 55. 19.104 / 55. 19.104
libavdevice 55. 5.100 / 55. 5.100
libavfilter 3. 90.100 / 3. 90.100
libavresample 1. 1. 0 / 1. 1. 0
libswscale 2. 5.101 / 2. 5.101
libswresample 0. 17.104 / 0. 17.104
libpostproc 52. 3.100 / 52. 3.100
Input #0, image2, from 'a.png':
Duration: 00:00:00.03, start: 0.000000, bitrate: N/A
Stream #0:0: Video: png, pal8, 1904x1232, 30 fps, 30 tbr, 30 tbn, 30 tbc
[libx264 @ 0x7fe479800600] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
[libx264 @ 0x7fe479800600] profile High, level 3.1
[libx264 @ 0x7fe479800600] 264 - core 125 - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=1 ref=2 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=6 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=30 rc=abr mbtree=1 bitrate=1000 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'out.mp4':
Metadata:
encoder : Lavf55.19.104
Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 1280x720, q=-1--1, 1000 kb/s, 15360 tbn, 30 tbc
Stream mapping:
Stream #0:0 -> #0:0 (png -> libx264)
Press [q] to stop, [?] for help
frame=13780 fps= 35 q=-1.0 Lsize= 57239kB time=00:07:39.26 bitrate=1021.0kbits/s
video:57076kB audio:0kB subtitle:0 global headers:0kB muxing overhead 0.285284%
[libx264 @ 0x7fc50180a600] frame I:56 Avg QP: 2.82 size:706101
[libx264 @ 0x7fc50180a600] frame P:3473 Avg QP: 7.90 size: 2664
[libx264 @ 0x7fc50180a600] frame B:10251 Avg QP:14.77 size: 942
[libx264 @ 0x7fc50180a600] consecutive B-frames: 0.8% 0.0% 0.0% 99.2%
[libx264 @ 0x7fc50180a600] mb I I16..4: 15.2% 10.9% 73.9%
[libx264 @ 0x7fc50180a600] mb P I16..4: 0.0% 0.0% 0.2% P16..4: 0.8% 0.1% 0.4% 0.0% 0.0% skip:98.4%
[libx264 @ 0x7fc50180a600] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 0.2% 0.1% 0.3% direct: 0.1% skip:99.3% L0:49.2% L1:43.3% BI: 7.5%
[libx264 @ 0x7fc50180a600] final ratefactor: 5.65
[libx264 @ 0x7fc50180a600] 8x8 transform intra:9.1% inter:16.8%
[libx264 @ 0x7fc50180a600] coded y,uvDC,uvAC intra: 95.4% 97.6% 97.1% inter: 0.4% 0.5% 0.4%
[libx264 @ 0x7fc50180a600] i16 v,h,dc,p: 35% 16% 31% 19%
[libx264 @ 0x7fc50180a600] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 35% 14% 13% 4% 6% 9% 5% 8% 7%
[libx264 @ 0x7fc50180a600] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 30% 13% 11% 7% 7% 8% 7% 10% 7%
[libx264 @ 0x7fc50180a600] i8c dc,h,v,p: 38% 18% 34% 9%
[libx264 @ 0x7fc50180a600] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x7fc50180a600] ref P L0: 79.1% 20.9%
[libx264 @ 0x7fc50180a600] ref B L0: 78.4% 21.6%
[libx264 @ 0x7fc50180a600] ref B L1: 84.4% 15.6%
[libx264 @ 0x7fc50180a600] kb/s:1017.91
ffmpeg
Konsolenausgabe an.image2
von der-framerate
param gesteuertAntworten:
Mir ist klar, dass dies eine alte Frage ist, aber für den Fall, dass jemand (wie ich) darauf stößt, lautet die Antwort, dass die Zeitcodesprünge, die Sie sehen, kein Fehler sind, sondern wie beabsichtigt funktionieren.
Da Sie ein Drop-Frame mit 29,97 fps angegeben haben (durch Verwendung eines Semikolons im Timecode), entspricht das Überspringen von zwei Frames der Spezifikation (siehe hier: https://en.wikipedia.org/wiki/SMPTE_timecode#Drop_frame_timecode ).
Kurz gesagt: Da 29,97 eine Bruchzahl von Geschwindigkeiten ist und eine Videodatei keine Bruchzahl von Frames enthalten kann, müssen Frames gelöscht werden, um eine Korrelation zwischen dem Zeitcode und der Wanduhrzeit aufrechtzuerhalten. Beachten Sie, dass keine tatsächlichen Videobilder gelöscht werden, sondern nur Zeitcodes übersprungen werden. Die Spezifikation besagt, dass in der ersten Sekunde jeder Minute die ersten beiden Frames (null und eins) übersprungen werden, außer wenn der Minutenwert durch zehn teilbar ist.
Es wird also erwartet, dass der Zeitcode von 00: 00: 59: 29 nach 00: 01: 00: 02 wechselt. Um dies nicht zu erreichen, müssen Sie auf eine andere Bildrate umschalten und den Zeitcode nur mit Doppelpunkten schreiben: 00: 00: 00: 00.
quelle
-r 30
eine 30fps-Ausgabe ergibt, nicht 29,97. Vielen Dank für die Klarstellung der Spezifikation, das scheint tatsächlich das zu sein, was passiert ist!Ich habe einen StackOverflow-Beitrag zum selben Thema gefunden. Ich denke, diese Lösung ist etwas eleganter, also probieren Sie es aus .
Mit welcher Methode untersuchen Sie das Video? Hast du irgendwie bestätigt, dass es sich um das Video selbst handelt, im Gegensatz zum Videodecoder, der die Frames überspringt?
quelle