[FFmpeg-trac] #566(undetermined:new): Encoding AAC stereo audio which starts silently to mpeg-ts causes 0-channel audio output.
FFmpeg
trac at avcodec.org
Mon Oct 17 16:13:33 CEST 2011
#566: Encoding AAC stereo audio which starts silently to mpeg-ts causes 0-channel
audio output.
-------------------------------------+-------------------------------------
Reporter: tungj | Type: defect
Status: new | Priority: normal
Component: | Version:
undetermined | unspecified
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
When encoding a video with stereo audio which starts with 6 seconds of
silence to mpeg-ts, 'ffprobe' on the output .ts reports it to have an
audio track with 0 channels of audio despite the audio playing in FFplay
and vlc. This means the 0-channel audio stream is lost (in newest GIT
N-33724-gefb1ce2 FFmpeg with libfaac 1.28), or causes an 'encoding 0
channels is not allowed' error in older FFmpeg git-N-29122-gb8a4444
libfaac 1.26 builds when doing any encoding on that output later on.
Encoding the video to mpeg-ts:
{{{
tungj at tungj-ffmpeg:~/bugreport$ ffmpeg -y -i 'initialSilence.mp4' -f
mpegts -t 10 -acodec libfaac -ab 40k -ar 22050 initialSilence.ts
ffmpeg version N-33724-gefb1ce2, Copyright (c) 2000-2011 the FFmpeg
developers
built on Oct 17 2011 11:00:29 with gcc 4.4.3
configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-
postproc --enable-libfaac --enable-libopencore-amrnb --enable-libopencore-
amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-
libxvid --enable-x11grab
libavutil 51. 21. 0 / 51. 21. 0
libavcodec 53. 20. 1 / 53. 20. 1
libavformat 53. 16. 0 / 53. 16. 0
libavdevice 53. 4. 0 / 53. 4. 0
libavfilter 2. 43. 6 / 2. 43. 6
libswscale 2. 1. 0 / 2. 1. 0
libpostproc 51. 2. 0 / 51. 2. 0
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'initialSilence.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
creation_time : 1970-01-01 00:00:00
encoder : Lavf53.16.0
Duration: 00:00:10.02, start: 0.000000, bitrate: 84 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p,
200x200, 5 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
Metadata:
creation_time : 1970-01-01 00:00:00
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo,
s16, 72 kb/s
Metadata:
creation_time : 1970-01-01 00:00:00
[buffer @ 0xa9fc620] w:200 h:200 pixfmt:yuv420p tb:1/1000000 sar:0/1
sws_param:
[mpegts @ 0xa9fc6e0] muxrate VBR, pcr every 2 pkts, sdt every 200, pat/pmt
every 40 pkts
Output #0, mpegts, to 'initialSilence.ts':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
creation_time : 1970-01-01 00:00:00
encoder : Lavf53.16.0
Stream #0:0(und): Video: mpeg2video, yuv420p, 200x200, q=2-31, 200
kb/s, 90k tbn, 25 tbc
Metadata:
creation_time : 1970-01-01 00:00:00
Stream #0:1(und): Audio: aac, 22050 Hz, stereo, s16, 40 kb/s
Metadata:
creation_time : 1970-01-01 00:00:00
Stream mapping:
Stream #0.0 -> #0.0 (h264 -> mpeg2video)
Stream #0.1 -> #0.1 (aac -> libfaac)
Press [q] to stop, [?] for help
frame= 250 fps= 0 q=2.0 Lsize= 197kB time=00:00:09.96 bitrate=
161.7kbits/s
video:124kB audio:34kB global headers:0kB muxing overhead 24.226776%
}}}
The mpegts stream claims to have zero channels:
{{{
tungj at tungj-ffmpeg:~/bugreport$ ffmpeg -v 9 -loglevel 99 -i
initialSilence.ts
ffmpeg version N-33724-gefb1ce2, Copyright (c) 2000-2011 the FFmpeg
developers
built on Oct 17 2011 11:00:29 with gcc 4.4.3
configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-
postproc --enable-libfaac --enable-libopencore-amrnb --enable-libopencore-
amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-
libxvid --enable-x11grab
libavutil 51. 21. 0 / 51. 21. 0
libavcodec 53. 20. 1 / 53. 20. 1
libavformat 53. 16. 0 / 53. 16. 0
libavdevice 53. 4. 0 / 53. 4. 0
libavfilter 2. 43. 6 / 2. 43. 6
libswscale 2. 1. 0 / 2. 1. 0
libpostproc 51. 2. 0 / 51. 2. 0
[mpegts @ 0x9c24aa0] Format mpegts probed with size=2048 and score=100
[mpegts @ 0x9c24aa0] stream=0 stream_type=2 pid=100 prog_reg_desc=
[mpegts @ 0x9c24aa0] stream=1 stream_type=f pid=101 prog_reg_desc=
[aac @ 0x9c290c0] Unsupported bit depth: 0
[mpeg2video @ 0x9c288e0] Unsupported bit depth: 0
[mpegts @ 0x9c24aa0] max_analyze_duration 5000000 reached at 5000000
[NULL @ 0x9c290c0] start time is not set in estimate_timings_from_pts
Input #0, mpegts, from 'initialSilence.ts':
Duration: 00:00:09.96, start: 1.400000, bitrate: 161 kb/s
Program 1
Metadata:
service_name : Service01
service_provider: FFmpeg
Stream #0:0[0x100], 127, 1/90000: Video: mpeg2video (Main)
([2][0][0][0] / 0x0002), yuv420p, 200x200 [SAR 1:1 DAR 1:1], 1/50, 104857
kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:1[0x101](und), 0, 1/90000: Audio: aac ([15][0][0][0] /
0x000F), 0 channels, s16
At least one output file must be specified
}}}
When doing futher processing, the original audio is lost in output.mp4:
{{{
tungj at tungj-ffmpeg:~/bugreport$ ffmpeg -y -i 'initialSilence.ts' -vcodec
copy -acodec libfaac -ab 40k -ar 22050 output.mp4
ffmpeg version N-33724-gefb1ce2, Copyright (c) 2000-2011 the FFmpeg
developers
built on Oct 17 2011 11:00:29 with gcc 4.4.3
configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-
postproc --enable-libfaac --enable-libopencore-amrnb --enable-libopencore-
amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-
libxvid --enable-x11grab
libavutil 51. 21. 0 / 51. 21. 0
libavcodec 53. 20. 1 / 53. 20. 1
libavformat 53. 16. 0 / 53. 16. 0
libavdevice 53. 4. 0 / 53. 4. 0
libavfilter 2. 43. 6 / 2. 43. 6
libswscale 2. 1. 0 / 2. 1. 0
libpostproc 51. 2. 0 / 51. 2. 0
[mpegts @ 0x9346aa0] max_analyze_duration 5000000 reached at 5000000
[NULL @ 0x934b0c0] start time is not set in estimate_timings_from_pts
Input #0, mpegts, from 'initialSilence.ts':
Duration: 00:00:09.96, start: 1.400000, bitrate: 161 kb/s
Program 1
Metadata:
service_name : Service01
service_provider: FFmpeg
Stream #0:0[0x100]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002),
yuv420p, 200x200 [SAR 1:1 DAR 1:1], 104857 kb/s, 25 fps, 25 tbr, 90k tbn,
50 tbc
Stream #0:1[0x101](und): Audio: aac ([15][0][0][0] / 0x000F), 0
channels, s16
Output #0, mp4, to 'output.mp4':
Metadata:
encoder : Lavf53.16.0
Stream #0:0: Video: mpeg2video (a[0][0][0] / 0x0061), yuv420p, 200x200
[SAR 1:1 DAR 1:1], q=2-31, 104857 kb/s, 25 tbn, 25 tbc
Stream mapping:
Stream #0.0 -> #0.0 (copy)
Press [q] to stop, [?] for help
frame= 250 fps= 0 q=-1.0 Lsize= 127kB time=00:00:09.96 bitrate=
104.5kbits/s
video:124kB audio:0kB global headers:0kB muxing overhead 2.308019%
}}}
Details of the input file:
{{{
tungj at tungj-ffmpeg:~/bugreport$ ffmpeg -v 9 -loglevel 99 -i
initialSilence.mp4
ffmpeg version N-33724-gefb1ce2, Copyright (c) 2000-2011 the FFmpeg
developers
built on Oct 17 2011 11:00:29 with gcc 4.4.3
configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-
postproc --enable-libfaac --enable-libopencore-amrnb --enable-libopencore-
amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-
libxvid --enable-x11grab
libavutil 51. 21. 0 / 51. 21. 0
libavcodec 53. 20. 1 / 53. 20. 1
libavformat 53. 16. 0 / 53. 16. 0
libavdevice 53. 4. 0 / 53. 4. 0
libavfilter 2. 43. 6 / 2. 43. 6
libswscale 2. 1. 0 / 2. 1. 0
libpostproc 51. 2. 0 / 51. 2. 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 0xa374aa0] Format mov,mp4,m4a,3gp,3g2,mj2
probed with size=2048 and score=100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0xa374aa0] ISO: File Type Major Brand: isom
[aac @ 0xa3852a0] Unsupported bit depth: 0
[h264 @ 0xa37b5c0] no picture
Last message repeated 1 times
[mov,mp4,m4a,3gp,3g2,mj2 @ 0xa374aa0] All info found
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'initialSilence.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
creation_time : 1970-01-01 00:00:00
encoder : Lavf53.16.0
Duration: 00:00:10.02, start: 0.000000, bitrate: 84 kb/s
Stream #0:0(und), 3, 1/25: Video: h264 (High) (avc1 / 0x31637661),
yuv420p, 200x200, 1/50, 5 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
Metadata:
creation_time : 1970-01-01 00:00:00
Stream #0:1(und), 1, 1/48000: Audio: aac (mp4a / 0x6134706D), 48000
Hz, stereo, s16, 72 kb/s
Metadata:
creation_time : 1970-01-01 00:00:00
At least one output file must be specified
}}}
Interestingly, the problem seems to occur at the silence-to-audio
boundary; encoding either before the sound starts
ffmpeg -y -i 'initialSilence.mp4' -f mpegts -t 5 -acodec libfaac -ab
40k -ar 22050 initialSilence.ts
or after the silence ends
ffmpeg -y -i 'initialSilence.mp4' -f mpegts -ss 8 -acodec libfaac -ab
40k -ar 22050 initialSilence.ts
produce mpegts files which ffprobe reports as having stereo audio output.
--
Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/566>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list