[FFmpeg-user] skipped frames with 18fps DPX - non monotonically increasing dts to muxer

Paul B Mahol onemda at gmail.com
Thu Dec 13 12:25:45 EET 2018


On 12/13/18, Kieran O'Leary <kieran.oleary at irishfilm.ie> wrote:
> Hi,
>
> I have encountered some DPX that has an fps of 18. It seems that ffmpeg
> skips every few frames when decoding - at least when I performed a framemd5
> analysis. I noticed that 30522 frames were decoded, 10172 were dropped.
>
> It seems that adding -framerate 18 to as an input option resolves the issue,
> but should ffmpeg not auto-detect the FPS?
>
> I can replicate the issue with just a few frames (I will see if I can share
> the samples) - here's 17 frames decoded with nullm followed by the md5 muxer
> where only 14 frames are processed.:
>
> $ ./ffmpeg -i ffmpeg-1-01_%06d.dpx -f null -
>
> ffmpeg version N-92683-g32601fb821 Copyright (c) 2000-2018 the FFmpeg
> developers
>
>   built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
>
>   configuration:
>
>   libavutil      56. 24.101 / 56. 24.101
>
>   libavcodec     58. 42.100 / 58. 42.100
>
>   libavformat    58. 24.100 / 58. 24.100
>
>   libavdevice    58.  6.101 / 58.  6.101
>
>   libavfilter     7. 46.101 /  7. 46.101
>
>   libswscale      5.  4.100 /  5.  4.100
>
>   libswresample   3.  4.100 /  3.  4.100
>
> Input #0, image2, from 'ffmpeg-1-01_%06d.dpx':
>
>   Duration: 00:00:00.68, start: 0.000000, bitrate: N/A
>
>     Stream #0:0: Video: dpx, gbrp10le, 3840x2160, 18 tbr, 25 tbn, 18 tbc
>
> Stream mapping:
>
>   Stream #0:0 -> #0:0 (dpx (native) -> wrapped_avframe (native))
>
> Press [q] to stop, [?] for help
>
> Output #0, null, to 'pipe:':
>
>   Metadata:
>
>     encoder         : Lavf58.24.100
>
>     Stream #0:0: Video: wrapped_avframe, gbrp10le, 3840x2160, q=2-31, 200
> kb/s, 18 fps, 18 tbn, 18 tbc
>
>     Metadata:
>
>       encoder         : Lavc58.42.100 wrapped_avframe
>
> [null @ 0x7f88d3000600] Application provided invalid, non monotonically
> increasing dts to muxer in stream 0: 1 >= 1
>
> [null @ 0x7f88d3000600] Application provided invalid, non monotonically
> increasing dts to muxer in stream 0: 4 >= 4
>
> [null @ 0x7f88d3000600] Application provided invalid, non monotonically
> increasing dts to muxer in stream 0: 6 >= 6
>
> [null @ 0x7f88d3000600] Application provided invalid, non monotonically
> increasing dts to muxer in stream 0: 9 >= 9
>
> frame=   17 fps=0.0 q=-0.0 Lsize=N/A time=00:00:00.72 bitrate=N/A speed=
> 1.1x
>
> video:9kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing
> overhead: unknown
>
>
> $ ./ffmpeg -i ffmpeg-1-01_%06d.dpx -f md5  -
>
> ffmpeg version N-92683-g32601fb821 Copyright (c) 2000-2018 the FFmpeg
> developers
>
>   built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
>
>   configuration:
>
>   libavutil      56. 24.101 / 56. 24.101
>
>   libavcodec     58. 42.100 / 58. 42.100
>
>   libavformat    58. 24.100 / 58. 24.100
>
>   libavdevice    58.  6.101 / 58.  6.101
>
>   libavfilter     7. 46.101 /  7. 46.101
>
>   libswscale      5.  4.100 /  5.  4.100
>
>   libswresample   3.  4.100 /  3.  4.100
>
> Input #0, image2, from 'ffmpeg-1-01_%06d.dpx':
>
>   Duration: 00:00:00.68, start: 0.000000, bitrate: N/A
>
>     Stream #0:0: Video: dpx, gbrp10le, 3840x2160, 18 tbr, 25 tbn, 18 tbc
>
> Stream mapping:
>
>   Stream #0:0 -> #0:0 (dpx (native) -> rawvideo (native))
>
> Press [q] to stop, [?] for help
>
> Output #0, md5, to 'pipe:':
>
>   Metadata:
>
>     encoder         : Lavf58.24.100
>
>     Stream #0:0: Video: rawvideo (G3[0][10] / 0xA003347), gbrp10le,
> 3840x2160, q=2-31, 4478976 kb/s, 18 fps, 18 tbn, 18 tbc
>
>     Metadata:
>
>       encoder         : Lavc58.42.100 rawvideo
>
> frame=    5 fps=0.0 q=-0.0 size=       0kB time=00:00:00.27 bitrate=
> 0.0kbits/frame=    9 fps=7.5 q=-0.0 size=       0kB time=00:00:00.50
> bitrate=   0.0kbits/frame=   12 fps=7.0 q=-0.0 size=       0kB
> time=00:00:00.66 bitrate=   0.0kbits/MD5=123fb3ff58ca94c842453b518aeb6a9a
>
> frame=   14 fps=6.6 q=-0.0 Lsize=       0kB time=00:00:00.77 bitrate=
> 0.4kbits/s dup=0 drop=3 speed=0.364x

Here it says it dropped 3 frames.

>
> video:680400kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
> muxing overhead: unknown

This is because null does not need timestamps so it pass all frames no
matter which timestamps are there, on other hand md5 drops frames with
same timestamps.


More information about the ffmpeg-user mailing list