[FFmpeg-user] AAC mpeg2_aac_low profile and ADTS header question
Dan Lee
dan.lee at jocoos.com
Thu Sep 20 13:22:57 EEST 2018
Hello ffmpeg users,
I’m having some trouble transcoding audio to mpeg2 aac. I’d like to know if someone could help me get the desired result or understand this issue more clearly.
After reading the ffmpeg document I thought setting the aac profile to mpeg2_aac_low would transcode audio into mpeg2 aac(https://ffmpeg.org/ffmpeg-all.html#Options-6 <https://ffmpeg.org/ffmpeg-all.html#Options-6>). I expected the id field(first bit after 3byte sync word) of the adts headers in the file to have value 1 instead of 0, which indicates whether it’s mpeg 2 or 4(https://wiki.multimedia.cx/index.php/ADTS <https://wiki.multimedia.cx/index.php/ADTS> - The bit represented as the letter B). And this goes the same with when setting the profile to mpeg2_aac_he.
According to the source code(adtsenc.c) it seems like the bit is always written as cleared, so I doubt the possibility of getting the desired result but I want to know if
1. My expectation is based on a false assumption
2. My expectation is based on a valid assumption and
2.a It is a ffmpeg bug or should be fixed one day.
2.b Since mpeg2 is the superset of mpeg4 it really doesn’t matter these days because most decoders support mpeg4.
2.c There is a way in achieving the desired result with current version of ffmpeg
3. I am extracting the adts header incorrectly and everything must be carefully evaluated again
Suppose the following is the command for the purpose of demonstrating the problem I am having.
ffmpeg -y -i BigBuckBunny_320x180.mp4 -to 00:00:10 \
-map a:0 -c:a aac -profile:a mpeg2_aac_low -aac_pns 0 -b:a 128k -ar 48k \
mpeg2_aac_low.aac \
-map a:0 -c:a aac -profile:a mpeg2_aac_he -aac_pns 0 -b:a 128k -ar 48k \
mpeg2_aac_he.aac
The attachments are the resulting output files and the following is the output that ffmpeg gives me.
ffmpeg version 4.0.2 Copyright (c) 2000-2018 the FFmpeg developers
built with Apple LLVM version 9.1.0 (clang-902.0.39.2)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.0.2 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags='-I/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/include/darwin' --host-ldflags= --enable-gpl --enable-chromaprint --enable-ffplay --enable-frei0r --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfdk-aac --enable-libfontconfig --enable-libfreetype --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopus --enable-librsvg --enable-librtmp --enable-librubberband --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtesseract --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg --enable-libzmq --enable-opencl --enable-videotoolbox --enable-openssl --enable-libsrt --enable-lzma --enable-libopenjpeg --disable-decoder=jpeg2000 --extra-cflags=-I/usr/local/Cellar/openjpeg/2.3.0/include/openjpeg-2.3 --enable-nonfree
libavutil 56. 14.100 / 56. 14.100
libavcodec 58. 18.100 / 58. 18.100
libavformat 58. 12.100 / 58. 12.100
libavdevice 58. 3.100 / 58. 3.100
libavfilter 7. 16.100 / 7. 16.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 1.100 / 5. 1.100
libswresample 3. 1.100 / 3. 1.100
libpostproc 55. 1.100 / 55. 1.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'BigBuckBunny_320x180.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: mp41
creation_time : 1970-01-01T00:00:00.000000Z
title : Big Buck Bunny
artist : Blender Foundation
composer : Blender Foundation
date : 2008
encoder : Lavf52.14.0
Duration: 00:09:56.46, start: 0.000000, bitrate: 867 kb/s
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 320x180 [SAR 1:1 DAR 16:9], 702 kb/s, 24 fps, 24 tbr, 24 tbn, 48 tbc (default)
Metadata:
creation_time : 1970-01-01T00:00:00.000000Z
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 159 kb/s (default)
Metadata:
creation_time : 1970-01-01T00:00:00.000000Z
handler_name : SoundHandler
Stream mapping:
Stream #0:1 -> #0:0 (aac (native) -> aac (native))
Stream #0:1 -> #1:0 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
Output #0, adts, to 'mpeg2_aac_low.aac':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: mp41
date : 2008
title : Big Buck Bunny
artist : Blender Foundation
composer : Blender Foundation
encoder : Lavf58.12.100
Stream #0:0(und): Audio: aac (LC), 48000 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
creation_time : 1970-01-01T00:00:00.000000Z
handler_name : SoundHandler
encoder : Lavc58.18.100 aac
Output #1, adts, to 'mpeg2_aac_he.aac':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: mp41
date : 2008
title : Big Buck Bunny
artist : Blender Foundation
composer : Blender Foundation
encoder : Lavf58.12.100
Stream #1:0(und): Audio: aac, 48000 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
creation_time : 1970-01-01T00:00:00.000000Z
handler_name : SoundHandler
encoder : Lavc58.18.100 aac
size= 160kB time=00:09:56.24 bitrate= 2.2kbits/s speed= 106x
video:0kB audio:9522kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[aac @ 0x7fe88e016000] Qavg: 149.111
[aac @ 0x7fe88e017800] Qavg: 156.998
Any related comments and clarification about the issue is welcomed.
Thanks in advance.
Yoon-Soo
More information about the ffmpeg-user
mailing list