Opened 6 years ago
Last modified 6 years ago
#8900 new defect
ffmpeg generates a file which it rejexts as input with "Too many packets buffered for output stream"
| Reported by: | monnier | Owned by: | |
|---|---|---|---|
| Priority: | normal | Component: | undetermined |
| Version: | unspecified | Keywords: | |
| Cc: | monnier@iro.umontreal.ca | Blocked By: | |
| Blocking: | Reproduced by developer: | no | |
| Analyzed by developer: | yes |
Description
Summary of the bug: When I use ffmpeg to extract a chunk of a video, the resulting video is played correctly by Totem but is not accepted as input by ffmpeg, giving me "Too many packets buffered for output stream"
How to reproduce:
% ffmpeg -i sample.webm -vcodec copy -acodec copy -ss 06:00 -to 07:00 broken.webm; ffmpeg -i broken.webm copy.webm
ffmpeg version 4.3.1-2 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 10 (Debian 10.2.0-5)
configuration: --prefix=/usr --extra-version=2 --toolchain=hardened --libdir=/usr/lib/i386-linux-gnu --incdir=/usr/include/i386-linux-gnu --arch=i386 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --ignore-tests='hapenc-hap-none,hapenc-hapa-none,hapenc-hapq-none' --enable-shared
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
libpostproc 55. 7.100 / 55. 7.100
Input #0, matroska,webm, from 'sample.webm':
Metadata:
encoder : GStreamer matroskamux version 1.16.2
creation_time : 2020-07-03T23:24:15.000000Z
Duration: 00:08:13.60, start: 0.000000, bitrate: 82 kb/s
Stream #0:0(eng): Video: vp8, yuv420p(tv, bt709, progressive), 887x702, SAR 1:1 DAR 887:702, 10 fps, 10 tbr, 1k tbn, 1k tbc (default)
Metadata:
title : Video
Stream #0:1(eng): Audio: vorbis, 44100 Hz, stereo, fltp (default)
Metadata:
title : Audio
Output #0, webm, to 'broken.webm':
Metadata:
encoder : Lavf58.45.100
Stream #0:0(eng): Video: vp8, yuv420p(tv, bt709, progressive), 887x702 [SAR 1:1 DAR 887:702], q=2-31, 10 fps, 10 tbr, 1k tbn, 1k tbc (default)
Metadata:
title : Video
Stream #0:1(eng): Audio: vorbis, 44100 Hz, stereo, fltp (default)
Metadata:
title : Audio
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 488 fps=0.0 q=-1.0 Lsize= 536kB time=00:00:59.98 bitrate= 73.2kbits/s speed= 570x
video:190kB audio:320kB subtitle:0kB other streams:0kB global headers:4kB muxing overhead: 4.990967%
ffmpeg version 4.3.1-2 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 10 (Debian 10.2.0-5)
configuration: --prefix=/usr --extra-version=2 --toolchain=hardened --libdir=/usr/lib/i386-linux-gnu --incdir=/usr/include/i386-linux-gnu --arch=i386 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --ignore-tests='hapenc-hap-none,hapenc-hapa-none,hapenc-hapq-none' --enable-shared
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
libpostproc 55. 7.100 / 55. 7.100
Input #0, matroska,webm, from 'broken.webm':
Metadata:
ENCODER : Lavf58.45.100
Duration: 00:01:00.01, start: 0.018000, bitrate: 73 kb/s
Stream #0:0(eng): Video: vp8, yuv420p(tv, bt709, progressive), 887x702, SAR 1:1 DAR 887:702, 10 fps, 10 tbr, 1k tbn, 1k tbc (default)
Metadata:
title : Video
DURATION : 00:01:00.000000000
Stream #0:1(eng): Audio: vorbis, 44100 Hz, stereo, fltp (default)
Metadata:
title : Audio
DURATION : 00:01:00.010000000
Stream mapping:
Stream #0:0 -> #0:0 (vp8 (native) -> vp9 (libvpx-vp9))
Stream #0:1 -> #0:1 (vorbis (native) -> opus (libopus))
Press [q] to stop, [?] for help
[libopus @ 0x5835f000] No bit rate set. Defaulting to 96000 bps.
Too many packets buffered for output stream 0:1.
[libopus @ 0x5835f000] 1 frames left in the queue on closing
Conversion failed!
This is on Debian testing on i386 using Debian's build of ffmpeg
Attachments (1)
Change History (5)
by , 6 years ago
| Attachment: | sample2.webm added |
|---|
comment:2 by , 6 years ago
| Cc: | added |
|---|
comment:3 by , 6 years ago
| Analyzed by developer: | set |
|---|
You are streamcopying the first sample and therefore you have to live with the positions of the keyframes. The first keyframe of your sample after 1:00 is at 1:04 and the first keyframe of broken.mkv is at 4s. Before this keyframe are about 200 audio packets. They don't all fit into ffmpeg's muxing queue when using the default size for the muxing queue (which is 128). You can add -max_muxing_queue_size 256 as a workaround.
comment:4 by , 6 years ago
I can't add any special argument to the second ffmpeg run because it's not under my control (it's done by Peertube). I guess I could avoid the problem if I could re-run the first command without the copy codec, but in my real case I don't have the original uncut file, So the question becomes how to generate a file from broken.webm which does not suffer from this problem. I assume it will require some amount of re-encoding, but just doing ffmpeg -i broken.webm -max_muxing_queue_size 256 unbroken.webm doesn't do the trick (the result still suffers from the same problem).
It would be *very* helpful for ffmpeg to emit a loud warning when it is asked to *generate* a file which will suffer from the "Too many packets buffered for output stream" problem.



Note: My
sample.webmwas too big, so I had to upload a shorter version of it, so you need to adjust the times parameters in my recipe for the chunk to extract. It should now be-ss 01:00 -to 02:00.