Opened 2 years ago

Closed 2 years ago

Last modified 2 years ago

#7955 closed defect (fixed)

aselectstream hangs in multiple scenarios

Reported by: Eric Ball Owned by:
Priority: normal Component: avfilter
Version: git-master Keywords: streamselect
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

My objective is to use sendcmd/streamselect & asendcmd/astreamselect as part of a filter_comple_script processing multiple video+audio inputs into a single video_audio stream. sendcmd/streamselect works fine, but astreamselect causes ffmpeg to hang unless the input files are pure audio files.

Note: these are trivial examples which could be accomplished using map, but I wanted to avoid any unnecessary complexity (e.g. asendcmd).

Reproduced using ffmpeg version N-94014-g80e68ce116-tessus on macOS 10.14.5

astreamselect20190613.mp4 (to be uploaded) contains three streams:

Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 12635 kb/s, 60 fps, 60 tbr, 15360 tbn, 120 tbc (default)
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 127 kb/s (default)
Stream #0:2(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)

Test 1, video+audio file input, hangs until Ctrl-C, ffmpeg-20190613-070608.log:

./ffmpeg "-report:level=99" -i astreamselect20190613.mp4 -filter_complex:a "astreamselect=inputs=2:map=1" -c:v copy test1out.mp4

Input file #0 (astreamselect20190613.mp4):
  Input stream #0:0 (video): 5 packets read (257819 bytes); 
  Input stream #0:1 (audio): 3 packets read (797 bytes); 2 frames decoded (2048 samples); 
  Input stream #0:2 (audio): 4 packets read (1325 bytes); 3 frames decoded (3072 samples); 
  Total: 12 packets (259941 bytes) demuxed
Output file #0 (test1out.mp4):
  Output stream #0:0 (audio): 2 frames encoded (2048 samples); 3 packets muxed (967 bytes); 
  Output stream #0:1 (video): 5 packets muxed (257819 bytes); 
  Total: 8 packets (258786 bytes) muxed
5 frames successfully decoded, 0 decoding errors
[AVIOContext @ 0x7ffc4f40da00] Statistics: 2 seeks, 4 writeouts
[aac @ 0x7ffc52000000] Qavg: 225.886
[AVIOContext @ 0x7ffc4f4037c0] Statistics: 337843 bytes read, 2 seeks
Exiting normally, received signal 2.

Test 2, video+audio file input w/ -vn, hangs until Ctrl-C, ffmpeg-20190613-070719.log:

./ffmpeg "-report:level=99" -vn -i astreamselect20190613.mp4 -filter_complex:a "astreamselect=inputs=2:map=1" test2out.aac

Input file #0 (astreamselect20190613.mp4):
  Input stream #0:0 (video): 1 packets read (122932 bytes); 
  Input stream #0:1 (audio): 3 packets read (797 bytes); 2 frames decoded (2048 samples); 
  Input stream #0:2 (audio): 4 packets read (1325 bytes); 3 frames decoded (3072 samples); 
  Total: 8 packets (125054 bytes) demuxed
Output file #0 (test2out.aac):
  Output stream #0:0 (audio): 2 frames encoded (2048 samples); 3 packets muxed (967 bytes); 
  Total: 3 packets (967 bytes) muxed
5 frames successfully decoded, 0 decoding errors
[AVIOContext @ 0x7feae6c03600] Statistics: 0 seeks, 1 writeouts
[aac @ 0x7feaea001600] Qavg: 225.886
[AVIOContext @ 0x7feae6c00dc0] Statistics: 299484 bytes read, 5 seeks
Exiting normally, received signal 2.

Test 3, both streams in single file, hangs until Ctrl-C, ffmpeg-20190613-070926.log and ffmpeg-20190613-070957.log

./ffmpeg "-report:level=99" -vn -i astreamselect20190613.mp4 -map 0:1 -map 0:2 -c:a copy audioonly.mp4

Input file #0 (astreamselect20190613.mp4):
  Input stream #0:0 (video): 1 packets read (122932 bytes); 
  Input stream #0:1 (audio): 236 packets read (80052 bytes); 
  Input stream #0:2 (audio): 236 packets read (80511 bytes); 
  Total: 473 packets (283495 bytes) demuxed
Output file #0 (audioonly.mp4):
  Output stream #0:0 (audio): 236 packets muxed (80052 bytes); 
  Output stream #0:1 (audio): 236 packets muxed (80511 bytes); 
  Total: 472 packets (160563 bytes) muxed
0 frames successfully decoded, 0 decoding errors
[AVIOContext @ 0x7fe682602ec0] Statistics: 2 seeks, 4 writeouts
[AVIOContext @ 0x7fe68240f9c0] Statistics: 4834194 bytes read, 129 seeks

./ffmpeg "-report:level=99" -vn -i audioonly.mp4 -filter_complex:a "astreamselect=inputs=2:map=1" test3out.aac

Input file #0 (audioonly.mp4):
  Input stream #0:0 (audio): 3 packets read (797 bytes); 2 frames decoded (2048 samples); 
  Input stream #0:1 (audio): 4 packets read (1325 bytes); 3 frames decoded (3072 samples); 
  Total: 7 packets (2122 bytes) demuxed
Output file #0 (test3out.aac):
  Output stream #0:0 (audio): 2 frames encoded (2048 samples); 3 packets muxed (967 bytes); 
  Total: 3 packets (967 bytes) muxed
5 frames successfully decoded, 0 decoding errors
[AVIOContext @ 0x7f81c5c15980] Statistics: 0 seeks, 1 writeouts
[aac @ 0x7f81c600f400] Qavg: 225.886
[AVIOContext @ 0x7f81c5c0fb80] Statistics: 73414 bytes read, 2 seeks
Exiting normally, received signal 2.

Test 4, simple audio files, successful, ffmpeg-20190613-071050.log and ffmpeg-20190613-071127.log

./ffmpeg "-report:level=99" -vn -i astreamselect20190613.mp4 -map 0:1 -c:a copy stream1.aac -map 0:2 -c:a copy stream2.aac

Input file #0 (astreamselect20190613.mp4):
  Input stream #0:0 (video): 1 packets read (122932 bytes); 
  Input stream #0:1 (audio): 236 packets read (80052 bytes); 
  Input stream #0:2 (audio): 236 packets read (80511 bytes); 
  Total: 473 packets (283495 bytes) demuxed
Output file #0 (stream1.aac):
  Output stream #0:0 (audio): 236 packets muxed (80052 bytes); 
  Total: 236 packets (80052 bytes) muxed
Output file #1 (stream2.aac):
  Output stream #1:0 (audio): 236 packets muxed (80511 bytes); 
  Total: 236 packets (80511 bytes) muxed
0 frames successfully decoded, 0 decoding errors
[AVIOContext @ 0x7fb6b56138c0] Statistics: 0 seeks, 1 writeouts
[AVIOContext @ 0x7fb6b56147c0] Statistics: 0 seeks, 1 writeouts
[AVIOContext @ 0x7fb6b5606f80] Statistics: 4834194 bytes read, 129 seeks

./ffmpeg "-report:level=99" -i stream1.aac -i stream2.aac -filter_complex:a "astreamselect=inputs=2:map=1" test4out.aac

Input file #0 (stream1.aac):
  Input stream #0:0 (audio): 236 packets read (81704 bytes); 236 frames decoded (241664 samples); 
  Total: 236 packets (81704 bytes) demuxed
Input file #1 (stream2.aac):
  Input stream #1:0 (audio): 236 packets read (82163 bytes); 236 frames decoded (241664 samples); 
  Total: 236 packets (82163 bytes) demuxed
Output file #0 (test4out.aac):
  Output stream #0:0 (audio): 236 frames encoded (241664 samples); 237 packets muxed (80777 bytes); 
  Total: 237 packets (80777 bytes) muxed
472 frames successfully decoded, 0 decoding errors
[AVIOContext @ 0x7fbf22701ac0] Statistics: 0 seeks, 1 writeouts
[aac @ 0x7fbf23804a00] Qavg: 512.582
[AVIOContext @ 0x7fbf22700640] Statistics: 114632 bytes read, 4 seeks
[AVIOContext @ 0x7fbf22703a80] Statistics: 115091 bytes read, 4 seeks

I have also had similar issues if astreamselect is used in a complex audio filtergraph, but I haven't identified the minimal failure scenario.

Attachments (2)

astreamselect20190613.tar.gz (24.5 KB ) - added by Eric Ball 2 years ago.
ffmpeg report output
astreamselect20190614.mp4 (2.1 MB ) - added by Eric Ball 2 years ago.
astreamselect20190613.mp4 with reduced video

Change History (8)

by Eric Ball, 2 years ago

ffmpeg report output

comment:1 by Elon Musk, 2 years ago

Resolution: needs_more_info
Status: newclosed

Provide input files by uploading it somewhere, and reopen bug.

by Eric Ball, 2 years ago

Attachment: astreamselect20190614.mp4 added

astreamselect20190613.mp4 with reduced video

comment:2 by Eric Ball, 2 years ago

Resolution: needs_more_info
Status: closedreopened

comment:3 by Elon Musk, 2 years ago

Try this:

ffmpeg -i astreamselect20190614.mp4 -lavfi "[0:a:0]asetpts=N/SR/TB[a],[0:a:1]asetpts=N/SR/TB[b],[a][b]astreamselect=inputs=2:map=1

comment:4 by Eric Ball, 2 years ago

Thanks, this worked:

./ffmpeg -i astreamselect20190614.mp4 -filter_complex:a "[0:a:0]asetpts=N/SR/TB,asendcmd='2.5 astreamselect map 0'[a],[0:a:1]asetpts=N/SR/TB[b],[a][b]astreamselect=inputs=2:map=1" test5out.mp4

So is this a code bug or a doc bug? (Or did I miss something in the docs?)

comment:5 by Elon Musk, 2 years ago

Resolution: fixed
Status: reopenedclosed

It is code bug, should be fixed in 3bb170e530e3f9885d68e5c684fa82346d7158f4

Last edited 2 years ago by Carl Eugen Hoyos (previous) (diff)

comment:6 by Carl Eugen Hoyos, 2 years ago

Component: undeterminedavfilter
Keywords: streamselect added
Note: See TracTickets for help on using tickets.