Opened 7 years ago
Last modified 7 years ago
#6756 reopened defect
comfortnoise decoder prints warnings and decodes forever even if given a time limit
Reported by: | James Cowgill | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | undetermined |
Version: | git-master | Keywords: | |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | no | |
Analyzed by developer: | no |
Description
Summary of the bug:
With ffmpeg 3.4 and git master, trying to decode a nut file encoded with the comfortnoise codec spews warnings everywhere and generates a huge output file (ie many GBs) even though the output is limited to 1 second.
How to reproduce:
$ ffmpeg -f lavfi -i sine=d=10 -c:a comfortnoise -f nut comfortnoise.nut -y $ ffmpeg -i comfortnoise.nut -t 1 -c:v rawvideo -c:a pcm_s32le -f nut /dev/null -y
The warnings are all like this and appear to go on forever (although I killed it once the log file grew to about 1GB):
[nut @ 0x5610e00d14c0] Non-monotonous DTS in output stream 0:0; previous: 699, current: 697; changing to 700. This may result in incorrect timestamps in the output file. [nut @ 0x5610e00d14c0] Non-monotonous DTS in output stream 0:0; previous: 700, current: 697; changing to 701. This may result in incorrect timestamps in the output file. ...
One thing I notice is that trying to play the comfortnoise.nut file with ffplay causes the current timestamp to go wildly all over the place (including into negative time). I'm guessing this is related.
Change History (4)
comment:1 by , 7 years ago
comment:2 by , 7 years ago
Resolution: | → worksforme |
---|---|
Status: | new → closed |
$ ffmpeg -f lavfi -i sine=d=10 -c:a comfortnoise -f nut comfortnoise.nut -y ffmpeg version N-87875-gf685bbc Copyright (c) 2000-2017 the FFmpeg developers built with gcc 6.3.0 (GCC) configuration: --enable-gpl libavutil 55. 79.100 / 55. 79.100 libavcodec 57.108.100 / 57.108.100 libavformat 57. 84.100 / 57. 84.100 libavdevice 57. 11.100 / 57. 11.100 libavfilter 6.108.100 / 6.108.100 libswscale 4. 9.100 / 4. 9.100 libswresample 2. 10.100 / 2. 10.100 libpostproc 54. 8.100 / 54. 8.100 Input #0, lavfi, from 'sine=d=10': Duration: N/A, start: 0.000000, bitrate: 705 kb/s Stream #0:0: Audio: pcm_s16le, 44100 Hz, mono, s16, 705 kb/s Stream mapping: Stream #0:0 -> #0:0 (pcm_s16le (native) -> comfortnoise (native)) Press [q] to stop, [?] for help Output #0, nut, to 'comfortnoise.nut': Metadata: encoder : Lavf57.84.100 Stream #0:0: Audio: comfortnoise (3389 / 0x39383333), 44100 Hz, mono, s16, 128 kb/s Metadata: encoder : Lavc57.108.100 comfortnoise [Parsed_sine_0 @ 0x391d4c0] EOF timestamp not reliable size= 10kB time=00:00:10.01 bitrate= 8.5kbits/s speed= 971x video:0kB audio:7kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 39.986824%
$ ffmpeg -i comfortnoise.nut -t 1 -c:v rawvideo -c:a pcm_s32le -f nut /dev/null -y ffmpeg version N-87875-gf685bbc Copyright (c) 2000-2017 the FFmpeg developers built with gcc 6.3.0 (GCC) configuration: --enable-gpl libavutil 55. 79.100 / 55. 79.100 libavcodec 57.108.100 / 57.108.100 libavformat 57. 84.100 / 57. 84.100 libavdevice 57. 11.100 / 57. 11.100 libavfilter 6.108.100 / 6.108.100 libswscale 4. 9.100 / 4. 9.100 libswresample 2. 10.100 / 2. 10.100 libpostproc 54. 8.100 / 54. 8.100 Guessed Channel Layout for Input Stream #0.0 : mono Input #0, nut, from 'comfortnoise.nut': Metadata: encoder : Lavf57.84.100 Duration: 00:00:10.00, start: 0.000000, bitrate: 8 kb/s Stream #0:0: Audio: comfortnoise (3389 / 0x39383333), 8000 Hz, mono, s16 Metadata: encoder : Lavc57.108.100 comfortnoise Stream mapping: Stream #0:0 -> #0:0 (comfortnoise (native) -> pcm_s32le (native)) Press [q] to stop, [?] for help Output #0, nut, to '/dev/null': Metadata: encoder : Lavf57.84.100 Stream #0:0: Audio: pcm_s32le (PSD / 0x20445350), 8000 Hz, mono, s32, 256 kb/s Metadata: encoder : Lavc57.108.100 pcm_s32le size= 163kB time=00:00:01.00 bitrate=1334.6kbits/s speed= 491x video:0kB audio:162kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.425596%
comment:3 by , 7 years ago
Sorry, I copied the wrong command. It should be this:
$ ffmpeg -f lavfi -i sine=d=0.1 -c:a comfortnoise -f nut comfortnoise.nut -y $ ffmpeg -i comfortnoise.nut -t 1 -c:v rawvideo -c:a pcm_s32le -f nut /dev/null -y
ie "sine=d=0.1" instead of "sine=d=10"
comment:4 by , 7 years ago
Resolution: | worksforme |
---|---|
Status: | closed → reopened |
Managed to bisect to this commit (first bad commit):
commit 061a0c14bb5767bca72e3a7227ca400de439ba09
Author: Anton Khirnov <anton@khirnov.net>
Date: Wed Oct 26 13:59:15 2016 +0200