Opened 10 years ago

Closed 10 years ago

Last modified 10 years ago

#3217 closed defect (fixed)

ac3 muxer does not force single stream

Reported by: Selur Owned by:
Priority: normal Component: avformat
Version: git-master Keywords: ac3
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

Trying to fix a positive delay in an ac3 stream I stumbled over the problem, that as soon as I use '-map 0:1' (to make sure the correct audio stream is used) the output is broken.

call 1 (broken output):

ffmpeg -y -threads 8 -analyzeduration 100M -probesize 100M -i "H:\Output\cut.m2ts" -map 0:1 -vn -filter_complex "aevalsrc=0:0:0:0:0:0::d=0.138:sample_rate=48000[silence];[silence][0:a]concat=n=2:v=0:a=1[out]" -map [out]  -c:a ac3 -ab 384000 -map_metadata -1 "H:\Output\broken.ac3"

output 1:

ffmpeg version N-58961-g3af9d82 Copyright (c) 2000-2013 the FFmpeg developers  built on Dec 10 2013 22:26:27 with gcc 4.8.2 (rev0, Built by MinGW-W64 project)
  configuration: --arch=x86_64 --prefix=/local64 --extra-cflags='-DPTW32_STATIC_LIB -DLIBTWOLAME_STATIC' --extra-libs='-lxml2 -lz -liconv -lws2_32 -lstdc++ -lpng -lm -lpthread -lwsock32' --disable-debug --enable-gpl --enable-version3 --enable-postproc --enable-w32threads --enable-runtime-cpudetect --enable-memalign-hack --disable-shared --enable-static --enable-avfilter --enable-bzlib --enable-zlib --enable-librtmp --enable-gnutls --enable-avisynth --enable-frei0r --enable-filter=frei0r --enable-libbluray --enable-libcaca --enable-libopenjpeg --enable-fontconfig --enable-libfreetype --enable-libass --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvo-amrwbenc --enable-libschroedinger --enable-libsoxr --enable-libtwolame --enable-libutvideo --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvo-aacenc --enable-libopus --enable-libvidstab --enable-libvpx --enable-libxavs --enable-libx264 --enable-libxvid --enable-libzvbi
  libavutil      52. 58.100 / 52. 58.100
  libavcodec     55. 45.100 / 55. 45.100
  libavformat    55. 22.100 / 55. 22.100
  libavdevice    55.  5.102 / 55.  5.102
  libavfilter     3. 92.100 /  3. 92.100
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
[h264 @ 000000000075cd80] SEI type 1 size 56 truncated at 53
[h264 @ 000000000075cd80] mmco: unref short failure
    Last message repeated 1 times
[h264 @ 000000000075cd80] number of reference frames (0+4) exceeds max (3; probably corrupt input), discarding one
[h264 @ 000000000075cd80] SEI type 1 size 56 truncated at 53
    Last message repeated 38 times
Input #0, mpegts, from 'H:\Output\cut.m2ts':
  Duration: 00:00:30.11, start: 4292.050000, bitrate: 7719 kb/s
  Program 1
    Stream #0:0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 384 kb/s
[Parsed_aevalsrc_0 @ 0000000006bc05e0] This syntax is deprecated. Use '|' to separate the list items.
Output #0, ac3, to 'H:\Output\broken.ac3':
  Metadata:
    encoder         : Lavf55.22.100
    Stream #0:0: Audio: ac3, 48000 Hz, 5.1(side), fltp, 384 kb/s
    Stream #0:1: Audio: ac3, 48000 Hz, 5.1, fltp, 384 kb/s
Stream mapping:
  Stream #0:1 (ac3) -> concat:in1:a0 (graph 0)
  Stream #0:1 -> #0:0 (ac3 -> ac3)
  concat (graph 0) -> Stream #0:1 (ac3)
Press [q] to stop, [?] for help
size=    2828kB time=00:00:30.23 bitrate= 766.1kbits/s
video:0kB audio:2828kB subtitle:0 global headers:0kB muxing overhead 0.000000%

call 2 (working output):

ffmpeg -y -threads 8 -analyzeduration 100M -probesize 100M -i "H:\Output\cut.m2ts" -vn -filter_complex "aevalsrc=0:0:0:0:0:0::d=0.138:sample_rate=48000[silence];[silence][0:a]concat=n=2:v=0:a=1[out]" -map [out]  -c:a ac3 -ab 384000 -map_metadata -1 "H:\Output\working.ac3"

output 2:

ffmpeg version N-58961-g3af9d82 Copyright (c) 2000-2013 the FFmpeg developers built on Dec 10 2013 22:26:27 with gcc 4.8.2 (rev0, Built by MinGW-W64 project)
  configuration: --arch=x86_64 --prefix=/local64 --extra-cflags='-DPTW32_STATIC_LIB -DLIBTWOLAME_STATIC' --extra-libs='-lxml2 -lz -liconv -lws2_32 -lstdc++ -lpng -lm -lpthread -lwsock32' --disable-debug --enable-gpl --enable-version3 --enable-postproc --enable-w32threads --enable-runtime-cpudetect --enable-memalign-hack --disable-shared --enable-static --enable-avfilter --enable-bzlib --enable-zlib --enable-librtmp --enable-gnutls --enable-avisynth --enable-frei0r --enable-filter=frei0r --enable-libbluray --enable-libcaca --enable-libopenjpeg --enable-fontconfig --enable-libfreetype --enable-libass --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvo-amrwbenc --enable-libschroedinger --enable-libsoxr --enable-libtwolame --enable-libutvideo --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvo-aacenc --enable-libopus --enable-libvidstab --enable-libvpx --enable-libxavs --enable-libx264 --enable-libxvid --enable-libzvbi
  libavutil      52. 58.100 / 52. 58.100
  libavcodec     55. 45.100 / 55. 45.100
  libavformat    55. 22.100 / 55. 22.100
  libavdevice    55.  5.102 / 55.  5.102
  libavfilter     3. 92.100 /  3. 92.100
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
[h264 @ 000000000078cc40] SEI type 1 size 56 truncated at 53
[h264 @ 000000000078cc40] mmco: unref short failure
    Last message repeated 1 times
[h264 @ 000000000078cc40] number of reference frames (0+4) exceeds max (3; probably corrupt input), discarding one
[h264 @ 000000000078cc40] SEI type 1 size 56 truncated at 53
    Last message repeated 38 times
Input #0, mpegts, from 'H:\Output\cut.m2ts':
  Duration: 00:00:30.11, start: 4292.050000, bitrate: 7719 kb/s
  Program 1
    Stream #0:0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 384 kb/s
[Parsed_aevalsrc_0 @ 000000000078d560] This syntax is deprecated. Use '|' to separate the list items.
Output #0, ac3, to 'H:\Output\working.ac3':
  Metadata:
    encoder         : Lavf55.22.100
    Stream #0:0: Audio: ac3, 48000 Hz, 5.1, fltp, 384 kb/s
Stream mapping:
  Stream #0:1 (ac3) -> concat:in1:a0
  concat -> Stream #0:0 (ac3)
Press [q] to stop, [?] for help
size=    1418kB time=00:00:30.23 bitrate= 384.1kbits/s
video:0kB audio:1418kB subtitle:0 global headers:0kB muxing overhead 0.000000%
}}
Problem:
"call 1" produces a broken output, where as "call 2" works fine.
The only difference between these calls is the "-map 0:1" part, which often is required to select the correct audio stream which should be processed.

Uploaded the source and the two outputs to:
http://www.embedupload.com/?d=8GIXBAL0NC

Change History (3)

comment:1 by Carl Eugen Hoyos, 10 years ago

Component: FFmpegavformat
Keywords: ac3 added
Reproduced by developer: set
Status: newopen
Summary: Audio filter produce broken output when used with '-map'ac3 muxer does not force single stream

Patch sent.

$ ffmpeg -f s16le -i /dev/zero -map 0:0 -map 0:0 -t 1 out.ac3
ffmpeg version N-58970-g7f39352 Copyright (c) 2000-2013 the FFmpeg developers
  built on Dec 11 2013 09:41:48 with gcc 4.7 (SUSE Linux)
  configuration: --enable-gpl
  libavutil      52. 58.100 / 52. 58.100
  libavcodec     55. 46.100 / 55. 46.100
  libavformat    55. 22.101 / 55. 22.101
  libavdevice    55.  5.102 / 55.  5.102
  libavfilter     3. 92.100 /  3. 92.100
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
Guessed Channel Layout for  Input Stream #0.0 : mono
Input #0, s16le, from '/dev/zero':
  Duration: N/A, bitrate: 705 kb/s
    Stream #0:0: Audio: pcm_s16le, 44100 Hz, mono, s16, 705 kb/s
Output #0, ac3, to 'out.ac3':
  Metadata:
    encoder         : Lavf55.22.101
    Stream #0:0: Audio: ac3, 44100 Hz, mono, fltp, 96 kb/s
    Stream #0:1: Audio: ac3, 44100 Hz, mono, fltp, 96 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (pcm_s16le -> ac3)
  Stream #0:0 -> #0:1 (pcm_s16le -> ac3)
Press [q] to stop, [?] for help
size=      24kB time=00:00:01.00 bitrate= 193.1kbits/s
video:0kB audio:24kB subtitle:0 global headers:0kB muxing overhead 0.000000%

comment:2 by Carl Eugen Hoyos, 10 years ago

Resolution: fixed
Status: openclosed

Should be fixed in 945a440d - thank you for the report!

comment:3 by Selur, 10 years ago

No problem and thanks for the fast response.

Note: See TracTickets for help on using tickets.