#9990 closed defect (invalid)
FilterGraph + Map creates too many output streams, causes wrong output
| Reported by: | U. Artie Eoff | Owned by: | |
|---|---|---|---|
| Priority: | important | Component: | ffmpeg |
| Version: | git-master | Keywords: | regression |
| Cc: | U. Artie Eoff | Blocked By: | |
| Blocking: | Reproduced by developer: | no | |
| Analyzed by developer: | no |
Description
Summary of the bug:
ffmpeg creates too many output streams and also dishonors vframes. MD5 output is wrong and YUV output is wrong. Also seeing lots of "dropping frame" messages. All input frames get decoded regardless of vframes setting.
This is a regression somewhere in the following commit window: https://github.com/ffmpeg/ffmpeg/compare/1af499cde0958264d4cc03f0ff6371c5ae8edbf4...7aa5ea237f84429a563c386f00fb035f48834273
Prior to this commit window, the YUV and MD5 are correct.
How to reproduce:
% ffmpeg -v verbose -i AUD_MW_E.264 -lavfi 'null' -c:v rawvideo \
-pix_fmt yuv420p -fps_mode passthrough -autoscale 0 -vframes 4 \
-y -f tee -map 0:v 'out.yuv|[f=md5]pipe:1'
ffmpeg version N-108846-g9bed814e1d44 Copyright (c) 2000-2022 the FFmpeg developers
built with gcc 11 (GCC)
configuration: --prefix=/home/uaeoff/Work/workspace/media/install --disable-static --enable-shared --enable-libdrm --enable-vaapi --enable-libmfx --disable-amf --disable-audiotoolbox --disable-cuda --disable-cuda-sdk --disable-cuvid --disable-d3d11va --disable-dxva2 --disable-libnpp --disable-mmal --disable-nvdec --disable-nvenc --disable-omx --disable-omx-rpi --disable-rkmpp --disable-v4l2-m2m --disable-vdpau --disable-videotoolbox --enable-gpl --enable-libx264 --enable-libx265
libavutil 57. 39.101 / 57. 39.101
libavcodec 59. 51.100 / 59. 51.100
libavformat 59. 34.101 / 59. 34.101
libavdevice 59. 8.101 / 59. 8.101
libavfilter 8. 49.101 / 8. 49.101
libswscale 6. 8.112 / 6. 8.112
libswresample 4. 9.100 / 4. 9.100
libpostproc 56. 7.100 / 56. 7.100
[h264 @ 0x23dd080] Reinit context to 176x144, pix_fmt: yuv420p
Input #0, h264, from '/home/uaeoff/Work/workspace/media/src/otc-media/assets/bat/avc/AUD_MW_E.264':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: h264 (Constrained Baseline), 1 reference frame, yuv420p(progressive), 176x144, 25 fps, 25 tbr, 1200k tbn
Stream mapping:
Stream #0:0 (h264) -> null:default (graph 0)
null:default (graph 0) -> Stream #0:0 (rawvideo)
Stream #0:0 -> #0:1 (h264 (native) -> rawvideo (native))
Press [q] to stop, [?] for help
[h264 @ 0x23f9b40] Reinit context to 176x144, pix_fmt: yuv420p
[graph 0 input from stream 0:0 @ 0x2633bc0] w:176 h:144 pixfmt:yuv420p tb:1/1200000 fr:25/1 sar:0/1
[graph 1 input from stream 0:0 @ 0x2640a40] w:176 h:144 pixfmt:yuv420p tb:1/1200000 fr:25/1 sar:0/1
[tee @ 0x24209c0] filename:'out.yuv' format:rawvideo
[tee @ 0x24209c0] stream:0 codec:rawvideo type:video bsfs: null
[tee @ 0x24209c0] stream:1 codec:rawvideo type:video bsfs: null
[tee @ 0x24209c0] filename:'pipe:1' format:md5
[tee @ 0x24209c0] stream:0 codec:rawvideo type:video bsfs: null
[tee @ 0x24209c0] stream:1 codec:rawvideo type:video bsfs: null
Output #0, tee, to 'out.yuv|[f=md5]pipe:1':
Metadata:
encoder : Lavf59.34.101
Stream #0:0: Video: rawvideo, 1 reference frame (I420 / 0x30323449), yuv420p(progressive), 176x144 (0x0), q=2-31, 7603 kb/s, 25 fps, 25 tbn (default)
Metadata:
encoder : Lavc59.51.100 rawvideo
Stream #0:1: Video: rawvideo, 1 reference frame (I420 / 0x30323449), yuv420p(progressive), 176x144 (0x0), q=2-31, 7603 kb/s, 25 fps, 25 tbn
Metadata:
encoder : Lavc59.51.100 rawvideo
*** dropping frame 4 from stream 0 at ts 4 0kB time=-577014:32:22.77 bitrate= -0.0kbits/s speed=N/A
*** dropping frame 4 from stream 0 at ts 5
*** dropping frame 4 from stream 0 at ts 6
*** dropping frame 4 from stream 0 at ts 7
*** dropping frame 4 from stream 0 at ts 8
*** dropping frame 4 from stream 0 at ts 9
*** dropping frame 4 from stream 0 at ts 10
*** dropping frame 4 from stream 0 at ts 11
*** dropping frame 4 from stream 0 at ts 12
*** dropping frame 4 from stream 0 at ts 13
*** dropping frame 4 from stream 0 at ts 14
*** dropping frame 4 from stream 0 at ts 15
*** dropping frame 4 from stream 0 at ts 16
*** dropping frame 4 from stream 0 at ts 17
*** dropping frame 4 from stream 0 at ts 18
*** dropping frame 4 from stream 0 at ts 19
*** dropping frame 4 from stream 0 at ts 20
*** dropping frame 4 from stream 0 at ts 21
*** dropping frame 4 from stream 0 at ts 22
*** dropping frame 4 from stream 0 at ts 23
*** dropping frame 4 from stream 0 at ts 24
*** dropping frame 4 from stream 0 at ts 25
*** dropping frame 4 from stream 0 at ts 26
*** dropping frame 4 from stream 0 at ts 27
*** dropping frame 4 from stream 0 at ts 28
*** dropping frame 4 from stream 0 at ts 29
*** dropping frame 4 from stream 0 at ts 30
*** dropping frame 4 from stream 0 at ts 31
*** dropping frame 4 from stream 0 at ts 32
*** dropping frame 4 from stream 0 at ts 33
*** dropping frame 4 from stream 0 at ts 34
*** dropping frame 4 from stream 0 at ts 35
*** dropping frame 4 from stream 0 at ts 36
*** dropping frame 4 from stream 0 at ts 37
*** dropping frame 4 from stream 0 at ts 38
*** dropping frame 4 from stream 0 at ts 39
*** dropping frame 4 from stream 0 at ts 40
*** dropping frame 4 from stream 0 at ts 41
*** dropping frame 4 from stream 0 at ts 42
*** dropping frame 4 from stream 0 at ts 43
*** dropping frame 4 from stream 0 at ts 44
*** dropping frame 4 from stream 0 at ts 45
*** dropping frame 4 from stream 0 at ts 46
*** dropping frame 4 from stream 0 at ts 47
*** dropping frame 4 from stream 0 at ts 48
*** dropping frame 4 from stream 0 at ts 49
*** dropping frame 4 from stream 0 at ts 50
*** dropping frame 4 from stream 0 at ts 51
*** dropping frame 4 from stream 0 at ts 52
*** dropping frame 4 from stream 0 at ts 53
*** dropping frame 4 from stream 0 at ts 54
*** dropping frame 4 from stream 0 at ts 55
*** dropping frame 4 from stream 0 at ts 56
*** dropping frame 4 from stream 0 at ts 57
*** dropping frame 4 from stream 0 at ts 58
*** dropping frame 4 from stream 0 at ts 59
*** dropping frame 4 from stream 0 at ts 60
*** dropping frame 4 from stream 0 at ts 61
*** dropping frame 4 from stream 0 at ts 62
*** dropping frame 4 from stream 0 at ts 63
*** dropping frame 4 from stream 0 at ts 64
*** dropping frame 4 from stream 0 at ts 65
*** dropping frame 4 from stream 0 at ts 66
*** dropping frame 4 from stream 0 at ts 67
*** dropping frame 4 from stream 0 at ts 68
*** dropping frame 4 from stream 0 at ts 69
*** dropping frame 4 from stream 0 at ts 70
*** dropping frame 4 from stream 0 at ts 71
*** dropping frame 4 from stream 0 at ts 72
*** dropping frame 4 from stream 0 at ts 73
*** dropping frame 4 from stream 0 at ts 74
*** dropping frame 4 from stream 0 at ts 75
*** dropping frame 4 from stream 0 at ts 76
*** dropping frame 4 from stream 0 at ts 77
*** dropping frame 4 from stream 0 at ts 78
*** dropping frame 4 from stream 0 at ts 79
*** dropping frame 4 from stream 0 at ts 80
*** dropping frame 4 from stream 0 at ts 81
*** dropping frame 4 from stream 0 at ts 82
*** dropping frame 4 from stream 0 at ts 83
*** dropping frame 4 from stream 0 at ts 84
*** dropping frame 4 from stream 0 at ts 85
*** dropping frame 4 from stream 0 at ts 86
*** dropping frame 4 from stream 0 at ts 87
*** dropping frame 4 from stream 0 at ts 88
EOF in input file 0
Terminating demuxer thread 0
*** dropping frame 4 from stream 0 at ts 89
*** dropping frame 4 from stream 0 at ts 90
*** dropping frame 4 from stream 0 at ts 91
*** dropping frame 4 from stream 0 at ts 92
*** dropping frame 4 from stream 0 at ts 93
*** dropping frame 4 from stream 0 at ts 94
*** dropping frame 4 from stream 0 at ts 95
*** dropping frame 4 from stream 0 at ts 96
*** dropping frame 4 from stream 0 at ts 97
*** dropping frame 4 from stream 0 at ts 98
*** dropping frame 4 from stream 0 at ts 99
No more output streams to write to, finishing.
All streams finished for output file #0
Terminating muxer thread 0
[AVIOContext @ 0x2c94f80] Statistics: 304128 bytes written, 0 seeks, 2 writeouts
MD5=c575f094f0b5d28dc9bd38f43b3bbb54
[AVIOContext @ 0x2c9f040] Statistics: 37 bytes written, 0 seeks, 1 writeouts
frame= 4 fps=0.0 q=-0.0 Lq=-0.0 size=N/A time=00:00:00.12 bitrate=N/A dup=0 drop=96 speed=14.3x
video:297kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Input file #0 (/home/uaeoff/Work/workspace/media/src/otc-media/assets/bat/avc/AUD_MW_E.264):
Input stream #0:0 (video): 100 packets read (54828 bytes); 100 frames decoded;
Total: 100 packets (54828 bytes) demuxed
Output file #0 (out.yuv|[f=md5]pipe:1):
Output stream #0:0 (video): 4 frames encoded; 4 packets muxed (152064 bytes);
Output stream #0:1 (video): 4 frames encoded; 4 packets muxed (152064 bytes);
Total: 8 packets (304128 bytes) muxed
[AVIOContext @ 0x23e48c0] Statistics: 54828 bytes read, 0 seeks
Change History (4)
comment:1 by , 4 years ago
comment:2 by , 4 years ago
| Summary: | Too many output streams causes wrong output → FilterGraph + Map creates too many output streams, causes wrong output |
|---|
comment:3 by , 4 years ago
| Resolution: | → invalid |
|---|---|
| Status: | new → closed |
Two output streams in this case is not a bug, rather the previous behaviour was incorrect and against the documentation. From -filter_complex manual section:
Unlabeled outputs are added to the first output file.
Your commandline contains one explicit map and one unlabeled filtergraph output, which is supposed to result in two output video streams. Previously, the map would be silently ignored. After 0d821edb40d27848304a7354b1c64c2e30e00e7d it is honored as it should be. The commit message actually mentions the behavior change.
All input frames get decoded regardless of vframes setting.
This actually is a bug, but unrelated to the report. I will see about fixing it.
comment:4 by , 4 years ago
Thanks for the explanation... that makes sense. I will omit the explicit map or just label my filtergraph.



Oddly, if I remove
-lavfioption OR-map 0:vit works.