Opened 9 months ago

Closed 9 months ago

#10515 closed defect (invalid)

setpts filter does not support sendcmd even though the docs state it does

Reported by: spacy51 Owned by:
Priority: normal Component: avfilter
Version: 6.0 Keywords: setpts sendcmd
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description (last modified by spacy51)

Summary of the bug:
After reading in the docs http://ffmpeg.org/ffmpeg-filters.html#Commands-163 "Both filters support all above options as commands." I tried controlling the setpts filter with the sendcmd filter, but it has no effect and the verbose logs explictly state "Function not implemented". Invoking "ffmpeg -h filter=setpts" also confirms, that this filter does NOT support commands.

setpts AVOptions:
   expr              <string>     ..FV....... Expression determining the frame timestamp (default "PTS")

From a short look at the source code (setpts.c https://git.ffmpeg.org/gitweb/ffmpeg.git/blob/HEAD:/libavfilter/setpts.c#l278) I got the impression that it is actually implemented.

My command line:
ffmpeg.exe -hide_banner -v 9 -loglevel 99 -nostats -y -f rawvideo -pix_fmt bgr24 -r:v:0 1000 -s:v:0 256x256 -an -i pipe:0 -frames:v:0 10 -filter:v:0 "settb=1/10000000,sendcmd=filename='C\:/Users/andre/AppData/Local/Temp/tmp5EFC.tmp',setpts" -pix_fmt yuv420p -f matroska -codec:v:0 libx264 -preset ultrafast -tune film -g 5 -crf 23 -threads auto -fps_mode:v:0 passthrough -stats_enc_post:v:0 pipe:1 -stats_enc_post_fmt:v:0 "{n}" "out_GrayscaleGradientFullRangeBGR24.mkv"

My command file:

0.000-0.001 setpts expr 0;
0.001-0.002 setpts expr 720000;
0.002-0.003 setpts expr 1530000;
0.003-0.004 setpts expr 2300000;
0.004-0.005 setpts expr 2860000;
0.005-0.006 setpts expr 3070000;
0.006-0.007 setpts expr 3630000;
0.007-0.008 setpts expr 4530000;
0.008-0.009 setpts expr 4970000;
0.009-0.010 setpts expr 5940000;

ffmpeg log:

Splitting the commandline.
Reading option '-hide_banner' ... matched as option 'hide_banner' (do not show program banner) with argument '1'.
Reading option '-v' ... matched as option 'v' (set logging level) with argument '9'.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument '99'.
Reading option '-nostats' ... matched as option 'stats' (print progress report during encoding) with argument 0.
Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'.
Reading option '-f' ... matched as option 'f' (force format) with argument 'rawvideo'.
Reading option '-pix_fmt' ... matched as option 'pix_fmt' (set pixel format) with argument 'bgr24'.
Reading option '-r:v:0' ... matched as option 'r' (set frame rate (Hz value, fraction or abbreviation)) with argument '1000'.
Reading option '-s:v:0' ... matched as option 's' (set frame size (WxH or abbreviation)) with argument '256x256'.
Reading option '-an' ... matched as option 'an' (disable audio) with argument '1'.
Reading option '-i' ... matched as input url with argument 'pipe:0'.
Reading option '-frames:v:0' ... matched as option 'frames' (set the number of frames to output) with argument '10'.
Reading option '-filter:v:0' ... matched as option 'filter' (set stream filtergraph) with argument 'settb=1/10000000,sendcmd=filename='C\:/Users/andre/AppData/Local/Temp/tmp6EE4.tmp',setpts'.
Reading option '-pix_fmt' ... matched as option 'pix_fmt' (set pixel format) with argument 'yuv420p'.
Reading option '-f' ... matched as option 'f' (force format) with argument 'matroska'.
Reading option '-codec:v:0' ... matched as option 'codec' (codec name) with argument 'libx264'.
Reading option '-preset' ... matched as AVOption 'preset' with argument 'ultrafast'.
Reading option '-tune' ... matched as AVOption 'tune' with argument 'film'.
Reading option '-g' ... matched as AVOption 'g' with argument '5'.
Reading option '-crf' ... matched as AVOption 'crf' with argument '23'.
Reading option '-threads' ... matched as AVOption 'threads' with argument 'auto'.
Reading option '-fps_mode:v:0' ... matched as option 'fps_mode' (set framerate mode for matching video streams; overrides vsync) with argument 'passthrough'.
Reading option '-stats_enc_post:v:0' ... matched as option 'stats_enc_post' (write encoding stats after encoding) with argument 'pipe:1'.
Reading option '-stats_enc_post_fmt:v:0' ... matched as option 'stats_enc_post_fmt' (format of the stats written with -stats_enc_post) with argument '{n}'.
Reading option 'out_GrayscaleGradientFullRangeBGR24.mkv' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option hide_banner (do not show program banner) with argument 1.
Applying option v (set logging level) with argument 9.
Applying option nostats (print progress report during encoding) with argument 0.
Applying option y (overwrite output files) with argument 1.
Successfully parsed a group of options.
Parsing a group of options: input url pipe:0.
Applying option f (force format) with argument rawvideo.
Applying option pix_fmt (set pixel format) with argument bgr24.
Applying option r:v:0 (set frame rate (Hz value, fraction or abbreviation)) with argument 1000.
Applying option s:v:0 (set frame size (WxH or abbreviation)) with argument 256x256.
Applying option an (disable audio) with argument 1.
Successfully parsed a group of options.
Opening an input file: pipe:0.
[rawvideo @ 000001154aa3cf00] Opening 'pipe:0' for reading
[pipe @ 000001154aa3db00] Setting default whitelist 'crypto,data'
[rawvideo @ 000001154aa3cf00] Before avformat_find_stream_info() pos: 0 bytes read:65536 seeks:0 nb_streams:1
[rawvideo @ 000001154aa3cf00] stream 0: start_time: 0 duration: NOPTS
[rawvideo @ 000001154aa3cf00] format: start_time: 0 duration: NOPTS (estimate from bit rate) bitrate=1572864 kb/s
[rawvideo @ 000001154aa3cf00] After avformat_find_stream_info() pos: 1966080 bytes read:1966080 seeks:0 frames:10
Input #0, rawvideo, from 'pipe:0':
  Duration: N/A, start: 0.000000, bitrate: 1572864 kb/s
  Stream #0:0, 10, 1/1000: Video: rawvideo, 1 reference frame (BGR[24] / 0x18524742), bgr24, 256x256, 0/1, 1572864 kb/s, 1k tbr, 1k tbn
Successfully opened the file.
Parsing a group of options: output url out_GrayscaleGradientFullRangeBGR24.mkv.
Applying option frames:v:0 (set the number of frames to output) with argument 10.
Applying option filter:v:0 (set stream filtergraph) with argument settb=1/10000000,sendcmd=filename='C\:/Users/andre/AppData/Local/Temp/tmp6EE4.tmp',setpts.
Applying option pix_fmt (set pixel format) with argument yuv420p.
Applying option f (force format) with argument matroska.
Applying option codec:v:0 (codec name) with argument libx264.
Applying option fps_mode:v:0 (set framerate mode for matching video streams; overrides vsync) with argument passthrough.
Applying option stats_enc_post:v:0 (write encoding stats after encoding) with argument pipe:1.
Applying option stats_enc_post_fmt:v:0 (format of the stats written with -stats_enc_post) with argument {n}.
Successfully parsed a group of options.
Opening an output file: out_GrayscaleGradientFullRangeBGR24.mkv.
[pipe @ 000001154aa3d2c0] Setting default whitelist 'crypto,data'
[file @ 000001154aab7700] Setting default whitelist 'file,crypto,data'
Successfully opened the file.
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
[vost#0:0/libx264 @ 000001154aab6100] cur_dts is invalid [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
[rawvideo @ 000001154aab4e80] PACKET SIZE: 196608, STRIDE: 768
[AVFilterGraph @ 000001154aa3c400] Setting 'expr' to value '1/10000000'
[AVFilterGraph @ 000001154aa3c400] Setting 'filename' to value 'C:/Users/andre/AppData/Local/Temp/tmp6EE4.tmp'
detected 16 logical cores
[Parsed_sendcmd_1 @ 000001154acb0b00] Parsed commands:
[Parsed_sendcmd_1 @ 000001154acb0b00] start_time:0.000000 end_time:0.001000 index:0
[Parsed_sendcmd_1 @ 000001154acb0b00]     [enter] target:setpts command:expr arg:0 index:0
[Parsed_sendcmd_1 @ 000001154acb0b00] start_time:0.001000 end_time:0.002000 index:1
[Parsed_sendcmd_1 @ 000001154acb0b00]     [enter] target:setpts command:expr arg:720000 index:0
[Parsed_sendcmd_1 @ 000001154acb0b00] start_time:0.002000 end_time:0.003000 index:2
[Parsed_sendcmd_1 @ 000001154acb0b00]     [enter] target:setpts command:expr arg:1530000 index:0
[Parsed_sendcmd_1 @ 000001154acb0b00] start_time:0.003000 end_time:0.004000 index:3
[Parsed_sendcmd_1 @ 000001154acb0b00]     [enter] target:setpts command:expr arg:2300000 index:0
[Parsed_sendcmd_1 @ 000001154acb0b00] start_time:0.004000 end_time:0.005000 index:4
[Parsed_sendcmd_1 @ 000001154acb0b00]     [enter] target:setpts command:expr arg:2860000 index:0
[Parsed_sendcmd_1 @ 000001154acb0b00] start_time:0.005000 end_time:0.006000 index:5
[Parsed_sendcmd_1 @ 000001154acb0b00]     [enter] target:setpts command:expr arg:3070000 index:0
[Parsed_sendcmd_1 @ 000001154acb0b00] start_time:0.006000 end_time:0.007000 index:6
[Parsed_sendcmd_1 @ 000001154acb0b00]     [enter] target:setpts command:expr arg:3630000 index:0
[Parsed_sendcmd_1 @ 000001154acb0b00] start_time:0.007000 end_time:0.008000 index:7
[Parsed_sendcmd_1 @ 000001154acb0b00]     [enter] target:setpts command:expr arg:4530000 index:0
[Parsed_sendcmd_1 @ 000001154acb0b00] start_time:0.008000 end_time:0.009000 index:8
[Parsed_sendcmd_1 @ 000001154acb0b00]     [enter] target:setpts command:expr arg:4970000 index:0
[Parsed_sendcmd_1 @ 000001154acb0b00] start_time:0.009000 end_time:0.010000 index:9
[Parsed_sendcmd_1 @ 000001154acb0b00]     [enter] target:setpts command:expr arg:5940000 index:0
[graph 0 input from stream 0:0 @ 000001154acb0fc0] Setting 'video_size' to value '256x256'
[graph 0 input from stream 0:0 @ 000001154acb0fc0] Setting 'pix_fmt' to value '3'
[graph 0 input from stream 0:0 @ 000001154acb0fc0] Setting 'time_base' to value '1/1000'
[graph 0 input from stream 0:0 @ 000001154acb0fc0] Setting 'pixel_aspect' to value '0/1'
[graph 0 input from stream 0:0 @ 000001154acb0fc0] Setting 'frame_rate' to value '1000/1'
[graph 0 input from stream 0:0 @ 000001154acb0fc0] w:256 h:256 pixfmt:bgr24 tb:1/1000 fr:1000/1 sar:0/1
[format @ 000001154acb7e40] Setting 'pix_fmts' to value 'yuv420p'
[auto_scale_0 @ 000001154acb82c0] w:iw h:ih flags:'' interl:0
[format @ 000001154acb7e40] auto-inserting filter 'auto_scale_0' between the filter 'Parsed_setpts_2' and the filter 'format'
[AVFilterGraph @ 000001154aa3c400] query_formats: 6 queried, 5 merged, 1 already done, 0 delayed
[Parsed_settb_0 @ 0000011549178a00] tb:1/1000 -> tb:1/10000000
[Parsed_sendcmd_1 @ 000001154acb0b00] TB:0.000000 FRAME_RATE:1000.000000 SAMPLE_RATE:nan
[auto_scale_0 @ 000001154acb82c0] w:256 h:256 fmt:bgr24 sar:0/1 -> w:256 h:256 fmt:yuv420p sar:0/1 flags:0x00000004
[Parsed_settb_0 @ 0000011549178a00] tb:1/1000 pts:0 -> tb:1/10000000 pts:0
[Parsed_sendcmd_1 @ 000001154acb0b00] [enter+expr] interval #0 start_ts:0.000000 end_ts:0.001000 ts:0.000000
[Parsed_sendcmd_1 @ 000001154acb0b00] Processing command #0 target:setpts command:expr arg:0
[Parsed_sendcmd_1 @ 000001154acb0b00] Command reply for command #0: ret:Function not implemented res:
[Parsed_setpts_2 @ 000001154acb0c00] N:0 PTS:0 T:0.000000 POS:0 INTERLACED:0 -> PTS:0 T:0.000000
[libx264 @ 000001154aab6400] using mv_range_thread = 24
[libx264 @ 000001154aab6400] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 000001154aab6400] profile Constrained Baseline, level 4.2, 4:2:0, 8-bit
[libx264 @ 000001154aab6400] 264 - core 164 r3106 eaa68fa - H.264/MPEG-4 AVC codec - Copyleft 2003-2023 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:-1:-1 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.15 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=8 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=5 keyint_min=1 scenecut=0 intra_refresh=0 rc=crf mbtree=0 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0
[matroska @ 000001154aab5380] get_metadata_duration returned: 0
Output #0, matroska, to 'out_GrayscaleGradientFullRangeBGR24.mkv':
  Metadata:
    encoder         : Lavf60.3.100
  Stream #0:0, 0, 1/1000: Video: h264, 1 reference frame (H264 / 0x34363248), yuv420p(tv, progressive), 256x256 (0x0), 0/1, q=2-31, 1k fps, 1k tbn
    Metadata:
      encoder         : Lavc60.3.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
[rawvideo @ 000001154aab4e80] PACKET SIZE: 196608, STRIDE: 768
[Parsed_settb_0 @ 0000011549178a00] tb:1/1000 pts:1 -> tb:1/10000000 pts:10000
[Parsed_sendcmd_1 @ 000001154acb0b00] [leave] interval #0 start_ts:0.000000 end_ts:0.001000 ts:0.001000
[Parsed_sendcmd_1 @ 000001154acb0b00] [enter+expr] interval #1 start_ts:0.001000 end_ts:0.002000 ts:0.001000
[Parsed_sendcmd_1 @ 000001154acb0b00] Processing command #0 target:setpts command:expr arg:720000
[Parsed_sendcmd_1 @ 000001154acb0b00] Command reply for command #0: ret:Function not implemented res:
[Parsed_setpts_2 @ 000001154acb0c00] N:1 PTS:10000 T:0.001000 POS:196608 INTERLACED:0 -> PTS:10000 T:0.001000
[rawvideo @ 000001154aab4e80] PACKET SIZE: 196608, STRIDE: 768
[Parsed_settb_0 @ 0000011549178a00] tb:1/1000 pts:2 -> tb:1/10000000 pts:20000
[Parsed_sendcmd_1 @ 000001154acb0b00] [leave] interval #1 start_ts:0.001000 end_ts:0.002000 ts:0.002000
[Parsed_sendcmd_1 @ 000001154acb0b00] [enter+expr] interval #2 start_ts:0.002000 end_ts:0.003000 ts:0.002000
[Parsed_sendcmd_1 @ 000001154acb0b00] Processing command #0 target:setpts command:expr arg:1530000
[Parsed_sendcmd_1 @ 000001154acb0b00] Command reply for command #0: ret:Function not implemented res:
[Parsed_setpts_2 @ 000001154acb0c00] N:2 PTS:20000 T:0.002000 POS:393216 INTERLACED:0 -> PTS:20000 T:0.002000
[rawvideo @ 000001154aab4e80] PACKET SIZE: 196608, STRIDE: 768
[Parsed_settb_0 @ 0000011549178a00] tb:1/1000 pts:3 -> tb:1/10000000 pts:30000
[Parsed_sendcmd_1 @ 000001154acb0b00] [leave] interval #2 start_ts:0.002000 end_ts:0.003000 ts:0.003000
[Parsed_sendcmd_1 @ 000001154acb0b00] [enter+expr] interval #3 start_ts:0.003000 end_ts:0.004000 ts:0.003000
[Parsed_sendcmd_1 @ 000001154acb0b00] Processing command #0 target:setpts command:expr arg:2300000
[Parsed_sendcmd_1 @ 000001154acb0b00] Command reply for command #0: ret:Function not implemented res:
[Parsed_setpts_2 @ 000001154acb0c00] N:3 PTS:30000 T:0.003000 POS:589824 INTERLACED:0 -> PTS:30000 T:0.003000
[rawvideo @ 000001154aab4e80] PACKET SIZE: 196608, STRIDE: 768
[Parsed_settb_0 @ 0000011549178a00] tb:1/1000 pts:4 -> tb:1/10000000 pts:40000
[Parsed_sendcmd_1 @ 000001154acb0b00] [leave] interval #3 start_ts:0.003000 end_ts:0.004000 ts:0.004000
[Parsed_sendcmd_1 @ 000001154acb0b00] [enter+expr] interval #4 start_ts:0.004000 end_ts:0.005000 ts:0.004000
[Parsed_sendcmd_1 @ 000001154acb0b00] Processing command #0 target:setpts command:expr arg:2860000
[Parsed_sendcmd_1 @ 000001154acb0b00] Command reply for command #0: ret:Function not implemented res:
[Parsed_setpts_2 @ 000001154acb0c00] N:4 PTS:40000 T:0.004000 POS:786432 INTERLACED:0 -> PTS:40000 T:0.004000
[rawvideo @ 000001154aab4e80] PACKET SIZE: 196608, STRIDE: 768
[Parsed_settb_0 @ 0000011549178a00] tb:1/1000 pts:5 -> tb:1/10000000 pts:50000
[Parsed_sendcmd_1 @ 000001154acb0b00] [leave] interval #4 start_ts:0.004000 end_ts:0.005000 ts:0.005000
[Parsed_sendcmd_1 @ 000001154acb0b00] [enter+expr] interval #5 start_ts:0.005000 end_ts:0.006000 ts:0.005000
[Parsed_sendcmd_1 @ 000001154acb0b00] Processing command #0 target:setpts command:expr arg:3070000
[Parsed_sendcmd_1 @ 000001154acb0b00] Command reply for command #0: ret:Function not implemented res:
[Parsed_setpts_2 @ 000001154acb0c00] N:5 PTS:50000 T:0.005000 POS:983040 INTERLACED:0 -> PTS:50000 T:0.005000
[rawvideo @ 000001154aab4e80] PACKET SIZE: 196608, STRIDE: 768
[Parsed_settb_0 @ 0000011549178a00] tb:1/1000 pts:6 -> tb:1/10000000 pts:60000
[Parsed_sendcmd_1 @ 000001154acb0b00] [leave] interval #5 start_ts:0.005000 end_ts:0.006000 ts:0.006000
[Parsed_sendcmd_1 @ 000001154acb0b00] [enter+expr] interval #6 start_ts:0.006000 end_ts:0.007000 ts:0.006000
[Parsed_sendcmd_1 @ 000001154acb0b00] Processing command #0 target:setpts command:expr arg:3630000
[Parsed_sendcmd_1 @ 000001154acb0b00] Command reply for command #0: ret:Function not implemented res:
[Parsed_setpts_2 @ 000001154acb0c00] N:6 PTS:60000 T:0.006000 POS:1179648 INTERLACED:0 -> PTS:60000 T:0.006000
[rawvideo @ 000001154aab4e80] PACKET SIZE: 196608, STRIDE: 768
[Parsed_settb_0 @ 0000011549178a00] tb:1/1000 pts:7 -> tb:1/10000000 pts:70000
[Parsed_sendcmd_1 @ 000001154acb0b00] [leave] interval #6 start_ts:0.006000 end_ts:0.007000 ts:0.007000
[Parsed_sendcmd_1 @ 000001154acb0b00] [enter+expr] interval #7 start_ts:0.007000 end_ts:0.008000 ts:0.007000
[Parsed_sendcmd_1 @ 000001154acb0b00] Processing command #0 target:setpts command:expr arg:4530000
[Parsed_sendcmd_1 @ 000001154acb0b00] Command reply for command #0: ret:Function not implemented res:
[Parsed_setpts_2 @ 000001154acb0c00] N:7 PTS:70000 T:0.007000 POS:1376256 INTERLACED:0 -> PTS:70000 T:0.007000
[rawvideo @ 000001154aab4e80] PACKET SIZE: 196608, STRIDE: 768
[Parsed_settb_0 @ 0000011549178a00] tb:1/1000 pts:8 -> tb:1/10000000 pts:80000
[Parsed_sendcmd_1 @ 000001154acb0b00] [leave] interval #7 start_ts:0.007000 end_ts:0.008000 ts:0.008000
[Parsed_sendcmd_1 @ 000001154acb0b00] [enter+expr] interval #8 start_ts:0.008000 end_ts:0.009000 ts:0.008000
[Parsed_sendcmd_1 @ 000001154acb0b00] Processing command #0 target:setpts command:expr arg:4970000
EOF in input file 0
Terminating demuxer thread 0
[Parsed_sendcmd_1 @ 000001154acb0b00] Command reply for command #0: ret:Function not implemented res:
[Parsed_setpts_2 @ 000001154acb0c00] N:8 PTS:80000 T:0.008000 POS:1572864 INTERLACED:0 -> PTS:80000 T:0.008000
[rawvideo @ 000001154aab4e80] PACKET SIZE: 196608, STRIDE: 768
[Parsed_settb_0 @ 0000011549178a00] tb:1/1000 pts:9 -> tb:1/10000000 pts:90000
[Parsed_sendcmd_1 @ 000001154acb0b00] [leave] interval #8 start_ts:0.008000 end_ts:0.009000 ts:0.009000
[Parsed_sendcmd_1 @ 000001154acb0b00] [enter+expr] interval #9 start_ts:0.009000 end_ts:0.010000 ts:0.009000
[Parsed_sendcmd_1 @ 000001154acb0b00] Processing command #0 target:setpts command:expr arg:5940000
[Parsed_sendcmd_1 @ 000001154acb0b00] Command reply for command #0: ret:Function not implemented res:
[Parsed_setpts_2 @ 000001154acb0c00] N:9 PTS:90000 T:0.009000 POS:1769472 INTERLACED:0 -> PTS:90000 T:0.009000
[libx264 @ 000001154aab6400] frame=   0 QP=20.00 NAL=3 Slice:I Poc:0   I:256  P:0    SKIP:0    size=846 bytes
[libx264 @ 000001154aab6400] frame=   1 QP=23.00 NAL=2 Slice:P Poc:2   I:0    P:0    SKIP:256  size=10 bytes
[libx264 @ 000001154aab6400] frame=   2 QP=21.00 NAL=2 Slice:P Poc:4   I:0    P:2    SKIP:254  size=16 bytes
[matroska @ 000001154aab5380] Starting new cluster with timestamp 0 at offset 557 bytes
[matroska @ 000001154aab5380] Writing block of size 1444 with pts 0, dts 0, duration 1 at relative offset 9 in cluster at offset 557. TrackNumber 1, keyframe 1
[libx264 @ 000001154aab6400] frame=   3 QP=19.00 NAL=2 Slice:P Poc:6   I:0    P:9    SKIP:247  size=30 bytes
[matroska @ 000001154aab5380] Writing block of size 10 with pts 1, dts 1, duration 1 at relative offset 1461 in cluster at offset 557. TrackNumber 1, keyframe 0
[libx264 @ 000001154aab6400] frame=   4 QP=18.00 NAL=2 Slice:P Poc:8   I:0    P:1    SKIP:255  size=13 bytes
[matroska @ 000001154aab5380] Writing block of size 16 with pts 2, dts 2, duration 1 at relative offset 1477 in cluster at offset 557. TrackNumber 1, keyframe 0
[libx264 @ 000001154aab6400] frame=   5 QP=18.00 NAL=3 Slice:I Poc:0   I:256  P:0    SKIP:0    size=1018 bytes
[matroska @ 000001154aab5380] Writing block of size 30 with pts 3, dts 3, duration 1 at relative offset 1499 in cluster at offset 557. TrackNumber 1, keyframe 0
[libx264 @ 000001154aab6400] frame=   6 QP=23.00 NAL=2 Slice:P Poc:2   I:0    P:0    SKIP:256  size=10 bytes
[matroska @ 000001154aab5380] Writing block of size 13 with pts 4, dts 4, duration 1 at relative offset 1535 in cluster at offset 557. TrackNumber 1, keyframe 0
[matroska @ 000001154aab5380] Writing block of size 1018 with pts 5, dts 5, duration 1 at relative offset 1554 in cluster at offset 557. TrackNumber 1, keyframe 1
[matroska @ 000001154aab5380] Writing block of size 10 with pts 6, dts 6, duration 1 at relative offset 2579 in cluster at offset 557. TrackNumber 1, keyframe 0
[libx264 @ 000001154aab6400] frame=   7 QP=21.00 NAL=2 Slice:P Poc:4   I:0    P:0    SKIP:256  size=10 bytes
[libx264 @ 000001154aab6400] frame=   8 QP=19.00 NAL=2 Slice:P Poc:6   I:0    P:3    SKIP:253  size=19 bytes
[matroska @ 000001154aab5380] Writing block of size 10 with pts 7, dts 7, duration 1 at relative offset 2595 in cluster at offset 557. TrackNumber 1, keyframe 0
[matroska @ 000001154aab5380] Writing block of size 19 with pts 8, dts 8, duration 1 at relative offset 2611 in cluster at offset 557. TrackNumber 1, keyframe 0
[libx264 @ 000001154aab6400] frame=   9 QP=18.00 NAL=2 Slice:P Poc:8   I:0    P:4    SKIP:252  size=20 bytes
No more output streams to write to, finishing.
[Parsed_settb_0 @ 0000011549178a00] tb:1/1000 pts:9 -> tb:1/10000000 pts:90000
[matroska @ 000001154aab5380] Writing block of size 20 with pts 9, dts 9, duration 1 at relative offset 2636 in cluster at offset 557. TrackNumber 1, keyframe 0
[Parsed_setpts_2 @ 000001154acb0c00] N:EOF PTS:90000 T:0.009000 POS:nan -> PTS:90000 T:0.009000
[out#0/matroska @ 000001154aa3c4c0] All streams finished
[out#0/matroska @ 000001154aa3c4c0] Terminating muxer thread
[matroska @ 000001154aab5380] end duration = 10
[matroska @ 000001154aab5380] stream 0 end duration = 10
[AVIOContext @ 000001154aab7880] Statistics: 3271 bytes written, 0 seeks, 1 writeouts
frame=   10 fps=0.0 q=-1.0 Lsize=       3kB time=00:00:00.00 bitrate=2907.6kbits/s speed=0.055x    
video:3kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 26.293436%
Input file #0 (pipe:0):
  Input stream #0:0 (video): 10 packets read (1966080 bytes); 10 frames decoded; 
  Total: 10 packets (1966080 bytes) demuxed
Output file #0 (out_GrayscaleGradientFullRangeBGR24.mkv):
  Output stream #0:0 (video): 10 frames encoded; 10 packets muxed (2590 bytes); 
  Total: 10 packets (2590 bytes) muxed
10 frames successfully decoded, 0 decoding errors
[libx264 @ 000001154aab6400] frame I:2     Avg QP:19.00  size:   932
[libx264 @ 000001154aab6400] frame P:8     Avg QP:20.25  size:    16
[libx264 @ 000001154aab6400] mb I  I16..4: 100.0%  0.0%  0.0%
[libx264 @ 000001154aab6400] mb P  I16..4:  0.0%  0.0%  0.0%  P16..4:  0.9%  0.0%  0.0%  0.0%  0.0%    skip:99.1%
[libx264 @ 000001154aab6400] coded y,uvDC,uvAC intra: 6.2% 28.1% 10.2% inter: 0.0% 0.8% 0.0%
[libx264 @ 000001154aab6400] i16 v,h,dc,p: 38% 45%  8%  9%
[libx264 @ 000001154aab6400] i8c dc,h,v,p: 35% 44% 17%  4%
[libx264 @ 000001154aab6400] kb/s:1593.60
[AVIOContext @ 000001154aa3e500] Statistics: 1966080 bytes read, 0 seeks
[AVIOContext @ 000001154aab7140] Statistics: 20 bytes written, 0 seeks, 10 writeouts

Change History (3)

comment:1 by spacy51, 9 months ago

My previous attempt for explicitly setting the timestamp for each frame was to use setpts directly with a big if/else expression (one line per frame), but this failed when the video had around 50 frames or more:

settb=1/1000,setpts=
if(eq(N\,1)\, 2*1000\,
if(eq(N\,2)\, 3*1000\,
if(eq(N\,3)\, 5*1000\,
if(eq(N\,4)\, 6*1000\,
0
))))

Is there really no way to explicitly set the timestamps for each frame? I can not use a simple expression for setpts because I need support for variable frame rate.

comment:2 by spacy51, 9 months ago

Description: modified (diff)

comment:3 by Elon Musk, 9 months ago

Resolution: invalid
Status: newclosed

Using not latest ffmpeg version. This was added in 14. May of 2023.

Note: See TracTickets for help on using tickets.