Opened 12 years ago
Closed 12 years ago
#1444 closed defect (fixed)
Incorrect duration displayed in webm file
Reported by: | Squerp | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | avformat |
Version: | git-master | Keywords: | duration |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | yes | |
Analyzed by developer: | no |
Description
Summary of the bug: Ffmpeg says that a video is longer than it actually is.
How to reproduce:
- Download https://saveyoutube.com/?url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DeRsGyueVLvQ as a 480p webm (named cliff.webm)
- Enter the following console commands and observe output
$ ffmpeg -y -i cliff.webm -threads 8 -f webm -vcodec libvpx -g 120 -level 216 -profile 0 -qmax 42 -qmin 10 -rc_buf_aggressivity 0.95 -b:v 2M -acodec libvorbis -aq 70 -ac 2 transcoded.webm ffmpeg version N-41027-ge02e58f Copyright (c) 2000-2012 the FFmpeg developers built on May 25 2012 13:09:41 with gcc 4.6.3 configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-runtime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libass --enable-libcelt --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libopenjpeg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib libavutil 51. 54.100 / 51. 54.100 libavcodec 54. 23.100 / 54. 23.100 libavformat 54. 6.100 / 54. 6.100 libavdevice 54. 0.100 / 54. 0.100 libavfilter 2. 77.100 / 2. 77.100 libswscale 2. 1.100 / 2. 1.100 libswresample 0. 15.100 / 0. 15.100 libpostproc 52. 0.100 / 52. 0.100 Input #0, matroska,webm, from 'cliff.webm': Duration: 00:00:15.07, start: 0.000000, bitrate: 753 kb/s Stream #0:0(eng): Video: vp8, yuv420p, 640x360, SAR 1:1 DAR 16:9, 1k fps, 1k tbr, 1k tbn, 1k tbc (default) Stream #0:1: Audio: vorbis, 44100 Hz, stereo, s16 (default) Please use -profile:a or -profile:v, -profile is ambiguous [buffer @ 0000000001e5fe60] w:640 h:360 pixfmt:yuv420p tb:1/1000 sar:1/1 sws_param:flags=2 [buffersink @ 0000000001dd6880] No opaque field provided [aformat @ 0000000001dd7720] auto-inserting filter 'auto-inserted resampler 0' between the filter 'src' and the filter 'aformat' [aresample @ 00000000003ecf40] chl:stereo fmt:s16 r:44100Hz -> chl:stereo fmt:flt r:44100Hz [libvpx @ 0000000001e5f080] v1.0.0 Output #0, webm, to 'transcoded.webm': Metadata: encoder : Lavf54.6.100 Stream #0:0(eng): Video: vp8, yuv420p, 640x360 [SAR 1:1 DAR 16:9], q=10-42, 2000 kb/s, 1k tbn, 1k tbc (default) Stream #0:1: Audio: vorbis, 44100 Hz, stereo, flt (default) Stream mapping: Stream #0:0 -> #0:0 (vp8 -> libvpx) Stream #0:1 -> #0:1 (vorbis -> libvorbis) Press [q] to stop, [?] for help [libvorbis @ 0000000003c56d60] Que input is backward in time Last message repeated 8 times [webm @ 0000000001e576a0] Audio timestamp 2200 < 2207 invalid, cliping [webm @ 0000000001e576a0] Audio timestamp 2203 < 2207 invalid, cliping [libvorbis @ 0000000003c56d60] Que input is backward in time Last message repeated 1 times [webm @ 0000000001e576a0] Audio timestamp 3228 < 3235 invalid, cliping [webm @ 0000000001e576a0] Audio timestamp 3230 < 3235 invalid, cliping [libvorbis @ 0000000003c56d60] Que input is backward in time Last message repeated 2 times [webm @ 0000000001e576a0] Audio timestamp 3359 < 3367 invalid, cliping [webm @ 0000000001e576a0] Audio timestamp 3362 < 3367 invalid, cliping [webm @ 0000000001e576a0] Audio timestamp 3361 < 3368 invalid, cliping [webm @ 0000000001e576a0] Audio timestamp 3364 < 3368 invalid, cliping [libvorbis @ 0000000003c56d60] Que input is backward in time Last message repeated 1 times Que input is backward in timee= 470kB time=00:00:05.03 bitrate= 764.2kbits/s [libvorbis @ 0000000003c56d60] Que input is backward in time [webm @ 0000000001e576a0] Audio timestamp 6307 < 6314 invalid, cliping [webm @ 0000000001e576a0] Audio timestamp 6310 < 6314 invalid, cliping Que input is backward in timee= 854kB time=00:00:07.10 bitrate= 984.3kbits/s [libvorbis @ 0000000003c56d60] Que input is backward in time Last message repeated 2 times Que input is backward in timee= 1396kB time=00:00:09.27 bitrate=1233.1kbits/s [libvorbis @ 0000000003c56d60] Que input is backward in time [webm @ 0000000001e576a0] Audio timestamp 12199 < 12206 invalid, cliping [webm @ 0000000001e576a0] Audio timestamp 12202 < 12206 invalid, cliping [libvorbis @ 0000000003c56d60] Que input is backward in time Last message repeated 1 times [webm @ 0000000001e576a0] Audio timestamp 12615 < 12623 invalid, cliping [webm @ 0000000001e576a0] Audio timestamp 12618 < 12623 invalid, cliping [webm @ 0000000001e576a0] Audio timestamp 12617 < 12624 invalid, cliping [webm @ 0000000001e576a0] Audio timestamp 12620 < 12624 invalid, cliping Que input is backward in timee= 1812kB time=00:00:11.61 bitrate=1278.5kbits/s [libvorbis @ 0000000003c56d60] Que input is backward in time [webm @ 0000000001e576a0] Audio timestamp 12928 < 12935 invalid, cliping [webm @ 0000000001e576a0] Audio timestamp 12931 < 12935 invalid, cliping [libvorbis @ 0000000003c56d60] Que input is backward in time [webm @ 0000000001e576a0] Audio timestamp 12971 < 12978 invalid, cliping [webm @ 0000000001e576a0] Audio timestamp 12974 < 12978 invalid, cliping [libvorbis @ 0000000003c56d60] Que input is backward in time Last message repeated 7 times [webm @ 0000000001e576a0] Audio timestamp 14650 < 14658 invalid, cliping [webm @ 0000000001e576a0] Audio timestamp 14653 < 14658 invalid, cliping [webm @ 0000000001e576a0] Audio timestamp 14652 < 14659 invalid, cliping [webm @ 0000000001e576a0] Audio timestamp 14655 < 14659 invalid, cliping [libvorbis @ 0000000003c56d60] Que input is backward in time frame= 449 fps=140 q=0.0 Lsize= 2456kB time=00:00:14.94 bitrate=1345.8kbits/s video:1903kB audio:539kB global headers:4kB muxing overhead 0.419683% $ ffmpeg.exe -i transcoded.webm ffmpeg version N-41027-ge02e58f Copyright (c) 2000-2012 the FFmpeg developers built on May 25 2012 13:09:41 with gcc 4.6.3 configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-runtime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libass --enable-libcelt --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libopenjpeg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib libavutil 51. 54.100 / 51. 54.100 libavcodec 54. 23.100 / 54. 23.100 libavformat 54. 6.100 / 54. 6.100 libavdevice 54. 0.100 / 54. 0.100 libavfilter 2. 77.100 / 2. 77.100 libswscale 2. 1.100 / 2. 1.100 libswresample 0. 15.100 / 0. 15.100 libpostproc 52. 0.100 / 52. 0.100 Input #0, matroska,webm, from 'transcoded.webm': Duration: 00:00:16.09, start: 0.000000, bitrate: 1250 kb/s Stream #0:0(eng): Video: vp8, yuv420p, 640x360, SAR 1:1 DAR 16:9, 1k fps, 1k tbr, 1k tbn, 1k tbc (default) Stream #0:1: Audio: vorbis, 44100 Hz, stereo, s16 (default) At least one output file must be specified $ ffmpeg.exe -i transcoded.webm -ss 16 -vframes 1 test.png ffmpeg version N-41027-ge02e58f Copyright (c) 2000-2012 the FFmpeg developers built on May 25 2012 13:09:41 with gcc 4.6.3 configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-runtime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libass --enable-libcelt --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libopenjpeg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib libavutil 51. 54.100 / 51. 54.100 libavcodec 54. 23.100 / 54. 23.100 libavformat 54. 6.100 / 54. 6.100 libavdevice 54. 0.100 / 54. 0.100 libavfilter 2. 77.100 / 2. 77.100 libswscale 2. 1.100 / 2. 1.100 libswresample 0. 15.100 / 0. 15.100 libpostproc 52. 0.100 / 52. 0.100 Input #0, matroska,webm, from 'transcoded.webm': Duration: 00:00:16.09, start: 0.000000, bitrate: 1250 kb/s Stream #0:0(eng): Video: vp8, yuv420p, 640x360, SAR 1:1 DAR 16:9, 1k fps, 1k tbr, 1k tbn, 1k tbc (default) Stream #0:1: Audio: vorbis, 44100 Hz, stereo, s16 (default) [buffer @ 0000000003ca5840] w:640 h:360 pixfmt:yuv420p tb:1/1000 sar:1/1 sws_param:flags=2 [buffersink @ 0000000001dd2b20] No opaque field provided [format @ 0000000001dd32e0] auto-inserting filter 'auto-inserted scaler 0' between the filter 'src' and the filter 'format' [scale @ 0000000001dd3680] w:640 h:360 fmt:yuv420p sar:1/1 -> w:640 h:360 fmt:rgb24 sar:1/1 flags:0x4 Output #0, image2, to 'test.png': Metadata: encoder : Lavf54.6.100 Stream #0:0(eng): Video: png, rgb24, 640x360 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 90k tbn, 1k tbc (default) Stream mapping: Stream #0:0 -> #0:0 (vp8 -> png) Press [q] to stop, [?] for help frame= 0 fps=0.0 q=0.0 Lsize= 0kB time=00:00:00.00 bitrate= 0.0kbits/s video:0kB audio:0kB global headers:0kB muxing overhead nan% Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)
Observed: Although ffmpeg indicates that the file is 16.09 seconds long, it cannot get a thumbnail 16 seconds into the file.
Expected: Duration displays correctly, so that the thumbnail command works with any number less than the stated duration.
Notes: burek on IRC confirmed that this is a bug. Something seems to be wrong with the way saveyoutube's webm files are done (maybe youtube's), but that should get fixed on transcode. The transcoding confirms that the file is actually only 14.94 seconds long, however the duration is still displayed wrong in the newly transcoded file (observe the second command above).
In my particular use case, I need to be able to get the duration of the video after transcoding it. My current work-around is to scrape the "time=" value while transcoding, but this is not ideal. Ideally after transcoding, I could use ffmpeg or ffprobe to get the correct duration, without needing to remember it from the transcode; a duration can be displayed by these efficiently (without reading the whole file), but this duration is not correct.
Attachments (1)
Change History (4)
by , 12 years ago
Attachment: | cliff.webm added |
---|
comment:1 by , 12 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:2 by , 12 years ago
Resolution: | fixed |
---|---|
Status: | closed → reopened |
I just updated to the static build at http://ffmpeg.zeranoe.com/builds/source/ffmpeg/ffmpeg-git-633b90c.tar.xz (from 8/10/12), and performed the repro steps again. The log is essentially the same as before, with the post-transcoded duration reported at >16 seconds, which appears to still be a bug. Can you provide logs from the fixed version and details on the version in which it is fixed?
comment:3 by , 12 years ago
Component: | undetermined → avformat |
---|---|
Keywords: | duration added; Duration webm transcoding removed |
Reproduced by developer: | set |
Resolution: | → fixed |
Status: | reopened → closed |
Version: | unspecified → git-master |
Fixed by Thierry Foucu in 98cbbab - not reproducible with 1.1 and 1.2.
Retesting with current ffmpeg, it reports duration as 15.07 so some other fix seems to have fixed this as well