Opened 9 years ago
Last modified 16 months ago
#3683 open defect
ffmpeg misdetects duration for mpeg file generated using ffmpeg (one frame short)
Reported by: | rmk | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | undetermined |
Version: | git-master | Keywords: | duration |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | no | |
Analyzed by developer: | no |
Description (last modified by )
The following sequence of commands shows the problem:
ffmpeg -f lavfi -i nullsrc=s=256x256:d=1.0 -c:v mpeg2video out.mpg ffmpeg version N-63519-g61917a1 Copyright (c) 2000-2014 the FFmpeg developers built on May 28 2014 14:40:18 with Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn) configuration: libavutil 52. 87.100 / 52. 87.100 libavcodec 55. 65.100 / 55. 65.100 libavformat 55. 41.100 / 55. 41.100 libavdevice 55. 13.101 / 55. 13.101 libavfilter 4. 5.100 / 4. 5.100 libswscale 2. 6.100 / 2. 6.100 libswresample 0. 19.100 / 0. 19.100 Input #0, lavfi, from 'nullsrc=s=256x256:d=1.0': Duration: N/A, start: 0.000000, bitrate: N/A Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 256x256 [SAR 1:1 DAR 1:1], 25 tbr, 25 tbn, 25 tbc [mpeg @ 0x7fedba801600] VBV buffer size not set, using default size of 130KB If you want the mpeg file to be compliant to some specification Like DVD, VCD or others, make sure you set the correct buffer size Output #0, mpeg, to 'out.mpg': Metadata: encoder : Lavf55.41.100 Stream #0:0: Video: mpeg2video, yuv420p, 256x256 [SAR 1:1 DAR 1:1], q=2-31, 200 kb/s, 25 fps, 90k tbn, 25 tbc Metadata: encoder : Lavc55.65.100 mpeg2video Stream mapping: Stream #0:0 -> #0:0 (rawvideo -> mpeg2video) Press [q] to stop, [?] for help frame= 25 fps=0.0 q=1.6 Lsize= 130kB time=00:00:00.96 bitrate=1109.3kbits/s video:127kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.983437%
ffmpeg -i out.mpg ffmpeg version N-63519-g61917a1 Copyright (c) 2000-2014 the FFmpeg developers built on May 28 2014 14:40:18 with Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn) configuration: libavutil 52. 87.100 / 52. 87.100 libavcodec 55. 65.100 / 55. 65.100 libavformat 55. 41.100 / 55. 41.100 libavdevice 55. 13.101 / 55. 13.101 libavfilter 4. 5.100 / 4. 5.100 libswscale 2. 6.100 / 2. 6.100 libswresample 0. 19.100 / 0. 19.100 Input #0, mpeg, from 'out.mpg': Duration: 00:00:00.96, start: 0.540000, bitrate: 1109 kb/s Stream #0:0[0x1e0]: Video: mpeg2video (Main), yuv420p(tv), 256x256 [SAR 1:1 DAR 1:1], max. 104857 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc At least one output file must be specified
The duration is misdetected as 0.96 instead of 1.0, i.e. one frame short. Note that this is not a problem of the nullsrc filter. I have run into this problem with files generated via transcoding but have used the source example so no upload is required.
Change History (3)
comment:1 by , 9 years ago
comment:2 by , 9 years ago
Component: | avformat → undetermined |
---|---|
Description: | modified (diff) |
Keywords: | duration added |
Version: | unspecified → git-master |
comment:3 by , 16 months ago
Status: | new → open |
---|
It now writes yuv422p by default and yeah it is now Duration: 00:00:04.21 but when you ffplay it it is yuv420p and 00:00:00.60. WHAT?
Fix that. Wow. Still all 25 frames are present...
Note:
See TracTickets
for help on using tickets.
Also note that all 25 frames are in the file. Checked that by decoding it in a libavformat/libavcodec-based application.