[FFmpeg-user] Frame rate reduction issues

Stefan Moro stefan.moro at gmail.com
Fri Apr 8 12:07:48 CEST 2016


On 5 April 2016 at 16:09, Stefan Moro <stefan.moro at gmail.com> wrote:

> Hi guys,
>
> After upgrading to (more or less latest) master of ffmpeg I got this error
> when trying to perform frame rate reduction of a video:
>
> root at 9462c135d114:/# ffmpeg -v debug -y -i file.mov -map 0:v:0 -filter:v
> "framestep=step=2" -codec:v libx264 -f mp4 -movflags +faststart /tmp/ncdsncj
> ffmpeg version N-79160-gb73c271 Copyright (c) 2000-2016 the FFmpeg
> developers
>   built with gcc 5.2.1 (Ubuntu 5.2.1-22ubuntu2) 20151010
>   configuration: --prefix=/tmp/tmp_build_dir --pkg-config-flags=--static
> --extra-cflags=-I/tmp/tmp_build_dir/include
> --extra-ldflags=-L/tmp/tmp_build_dir/lib --bindir=/root/bin --enable-gpl
> --enable-nonfree --enable-libx264 --enable-libsoxr --enable-libfdk-aac
>   libavutil      55. 19.100 / 55. 19.100
>   libavcodec     57. 32.100 / 57. 32.100
>   libavformat    57. 29.101 / 57. 29.101
>   libavdevice    57.  0.101 / 57.  0.101
>   libavfilter     6. 40.102 /  6. 40.102
>   libswscale      4.  0.100 /  4.  0.100
>   libswresample   2.  0.101 /  2.  0.101
>   libpostproc    54.  0.100 / 54.  0.100
> Splitting the commandline.
> Reading option '-v' ... matched as option 'v' (set logging level) with
> argument 'debug'.
> Reading option '-y' ... matched as option 'y' (overwrite output files)
> with argument '1'.
> Reading option '-i' ... matched as input file with argument 'file.mov'.
> Reading option '-map' ... matched as option 'map' (set input stream
> mapping) with argument '0:v:0'.
> Reading option '-filter:v' ... matched as option 'filter' (set stream
> filtergraph) with argument 'framestep=step=2'.
> Reading option '-codec:v' ... matched as option 'codec' (codec name) with
> argument 'libx264'.
> Reading option '-f' ... matched as option 'f' (force format) with argument
> 'mp4'.
> Reading option '-movflags' ... matched as AVOption 'movflags' with
> argument '+faststart'.
> Reading option '/tmp/ncdsncj' ... matched as output file.
> Finished splitting the commandline.
> Parsing a group of options: global .
> Applying option v (set logging level) with argument debug.
> Applying option y (overwrite output files) with argument 1.
> Successfully parsed a group of options.
> Parsing a group of options: input file file.mov.
> Successfully parsed a group of options.
> Opening an input file: file.mov.
> [file @ 0x4065c00] Setting default whitelist 'file,crypto'
> [mov,mp4,m4a,3gp,3g2,mj2 @ 0x4065500] Format mov,mp4,m4a,3gp,3g2,mj2
> probed with size=2048 and score=100
> [mov,mp4,m4a,3gp,3g2,mj2 @ 0x4065500] ISO: File Type Major Brand: qt
> [mov,mp4,m4a,3gp,3g2,mj2 @ 0x4065500] Unknown dref type 0x08206c7275 size
> 12
>     Last message repeated 2 times
> [mov,mp4,m4a,3gp,3g2,mj2 @ 0x4065500] Before avformat_find_stream_info()
> pos: 11392998 bytes read:76094 seeks:3
> [mov,mp4,m4a,3gp,3g2,mj2 @ 0x4065500] All info found
> [mov,mp4,m4a,3gp,3g2,mj2 @ 0x4065500] After avformat_find_stream_info()
> pos: 6401 bytes read:108862 seeks:4 frames:3
> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'file.mov':
>   Metadata:
>     major_brand     : qt
>     minor_version   : 512
>     compatible_brands: qt
>     encoder         : Lavf56.36.100
>   Duration: 00:00:10.01, start: 0.000000, bitrate: 9105 kb/s
>     Stream #0:0(eng), 1, 1/30000: Video: h264 (Main), 2 reference frames
> (avc1 / 0x31637661), yuv420p(tv, bt709, left), 1920x1080 (1920x1088),
> 1/60000, 8973 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 60k tbc (default)
>     Metadata:
>       handler_name    : DataHandler
>       encoder         : H.264
>       timecode        : 00:21:42;27
>     Stream #0:1(eng), 1, 1/48000: Audio: aac (LC) (mp4a / 0x6134706D),
> 48000 Hz, stereo, fltp, 123 kb/s (default)
>     Metadata:
>       handler_name    : DataHandler
>     Stream #0:2(eng), 1, 1/30000: Data: none (tmcd / 0x64636D74), 1/30, 0
> kb/s
>     Metadata:
>       handler_name    : DataHandler
>       timecode        : 00:21:42;27
> Successfully opened the file.
> Parsing a group of options: output file /tmp/ncdsncj.
> Applying option map (set input stream mapping) with argument 0:v:0.
> Applying option filter:v (set stream filtergraph) with argument
> framestep=step=2.
> Applying option codec:v (codec name) with argument libx264.
> Applying option f (force format) with argument mp4.
> Successfully parsed a group of options.
> Opening an output file: /tmp/ncdsncj.
> [file @ 0x406abc0] Setting default whitelist 'file,crypto'
> Successfully opened the file.
> detected 4 logical cores
> [Parsed_framestep_0 @ 0x406a700] Setting 'step' to value '2'
> [graph 0 input from stream 0:0 @ 0x406a3a0] Setting 'video_size' to value
> '1920x1080'
> [graph 0 input from stream 0:0 @ 0x406a3a0] Setting 'pix_fmt' to value '0'
> [graph 0 input from stream 0:0 @ 0x406a3a0] Setting 'time_base' to value
> '1/30000'
> [graph 0 input from stream 0:0 @ 0x406a3a0] Setting 'pixel_aspect' to
> value '0/1'
> [graph 0 input from stream 0:0 @ 0x406a3a0] Setting 'sws_param' to value
> 'flags=2'
> [graph 0 input from stream 0:0 @ 0x406a3a0] Setting 'frame_rate' to value
> '30000/1001'
> [graph 0 input from stream 0:0 @ 0x406a3a0] w:1920 h:1080 pixfmt:yuv420p
> tb:1/30000 fr:30000/1001 sar:0/1 sws_param:flags=2
> [format @ 0x40a6b40] compat: called with
> args=[yuv420p|yuvj420p|yuv422p|yuvj422p|yuv444p|yuvj444p|nv12|nv16|nv21]
> [format @ 0x40a6b40] Setting 'pix_fmts' to value
> 'yuv420p|yuvj420p|yuv422p|yuvj422p|yuv444p|yuvj444p|nv12|nv16|nv21'
> [AVFilterGraph @ 0x40774a0] query_formats: 4 queried, 3 merged, 0 already
> done, 0 delayed
> [Parsed_framestep_0 @ 0x406a700] step:2 frame_rate:30000/1001(29.970030)
> -> frame_rate:15000/1001(14.985015)
> [libx264 @ 0x4094960] using mv_range_thread = 88
> [libx264 @ 0x4094960] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
> AVX FMA3 AVX2 LZCNT BMI2
> [libx264 @ 0x4094960] profile High, level 4.0
> [libx264 @ 0x4094960] 264 - core 148 - H.264/MPEG-4 AVC codec - Copyleft
> 2003-2016 - http://www.videolan.org/x264.html - options: cabac=1 ref=3
> deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 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=6 lookahead_threads=1
> 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=2 keyint=250 keyint_min=14 scenecut=40
> intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0
> qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
> [mp4 @ 0x4097880] timecode: tbc=15000/1001 invalid, fallback on 15000/1001
> [mp4 @ 0x4097880] Drop frame is only allowed with 30000/1001 or 60000/1001
> FPS
> Output #0, mp4, to '/tmp/ncdsncj':
>   Metadata:
>     major_brand     : qt
>     minor_version   : 512
>     compatible_brands: qt
>     encoder         : Lavf57.29.101
>     Stream #0:0(eng), 0, 1/15000: Video: h264 (libx264), -1 reference
> frame ([33][0][0][0] / 0x0021), yuv420p(left), 1920x1080, 1001/15000,
> q=-1--1, 14.99 fps, 15k tbn, 14.99 tbc (default)
>     Metadata:
>       handler_name    : DataHandler
>       timecode        : 00:21:42;27
>       encoder         : Lavc57.32.100 libx264
>     Side data:
>       cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
> Stream mapping:
>   Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
> Could not write header for output file #0 (incorrect codec parameters ?):
> Invalid argument
> [AVIOContext @ 0x40a6d00] Statistics: 0 seeks, 1 writeouts
> [AVIOContext @ 0x406df60] Statistics: 108862 bytes read, 4 seeks
>
>
> It worked with previous versions of ffmpeg, and the error message doesn't
> make much sense to me. It works on many other files with same, and
> different, frame rates.
>
> The source file can be downloaded here:
> https://www.dropbox.com/s/txho2a2u62rw5uf/file.mov?dl=0
>
> Any ideas of why this doesn't work anymore?
>
> Regards
> Stefan
>

Hi again,

This definitely seems to be a bug that has appeared in some of the latest
commits to FFmpeg. The command above works fine and generates the expected
result in FFmpeg 3.0.1.
I have not had time to pinpoint the exact commit which introduced this
issue though...

Regards Stefan


More information about the ffmpeg-user mailing list