Log in

View Full Version : qaac - a new command line AAC/ALAC encoder using QuickTime API


Pages : [1] 2

b66pak
27th April 2010, 20:19
for who is interested...

http://sites.google.com/site/qaacpage/home

see also https://forum.doom9.org/showthread.php?p=1925401#post1925401

qaac is a command line AAC/ALAC encoder using QuickTime API, strongly influenced by http://tmkk.hp.infoseek.co.jp/qtaacenc/.

* Can read WAV, AIFF, AU, RawPCM, FLAC, Wavpack, ALAC. W64. (see libsndfile (http://www.mega-nerd.com/libsndfile/) [every PCM format supported by libsndfile is also supported by qaac]). Cuesheet(*.cue) is also supported from version 0.05. Support for +4gb .WAV form file/pipe added from version 0.12!
* Encodes as AAC-LC / AAC-HE / ALAC into standard ISO MP4 container.
* As for AAC, ADTS output is also supported from version 0.06.
* As for WAV, AIFF, AU, RawPCM: pipe input is supported.
* As for AIFF, FLAC, Wavpack, ALAC: embedded tags can be automatically pulled (not all).
* Can process multiple input files, wild card can be used.

Download latest version from here (http://sites.google.com/site/qaacpage/cabinet). You only have to download qaac-x.xx.zip, if you don't want to compile/browse source codes at all. Of course, you must install the latest Apple QuickTime to run the app.

qaac uses following libraries.

* Apple QuickTime SDK
* libmp4v2 (modified)
* libsndfile
* FLAC
* wavpack
* libid3tag
* GNU getopt (modified)
* boost


qaac 0.17
Usage: qaac [options] infiles....

"-" as infile means stdin.
In ADTS output mode, "-" as outfile means stdout.

Main options:
-d <dirname> Output directory, default is cwd
-a, --abr <bitrate> AAC ABR mode / bitrate
-V, --tvbr <n> AAC True VBR mode / quality [0-127]
-v, --cvbr <bitrate> AAC Constrained VBR mode / bitrate
-c, --cbr <bitrate> AAC CBR mode / bitrate
--he HE AAC mode (Can't use TVBR)
-A, --alac ALAC encoding mode
-q, --quality <n> AAC encoding Quality [0-2]
-r, --rate <option> Sample rate option (AAC only)
Specify one of the followings:
keep: Try to preserve the original rate
auto: Let QuickTime choose the optimal one
<number>: Literal rate in Hz
-s, --silent Don't be verbose
-n, --nice Give lower process priority
--downmix <mono|stereo> Downmix to mono/stereo
--no-optimize Don't optimize MP4 container file after encoding
--adts ADTS(raw AAC)output, instead of m4a(AAC only)
--ignorelength Assume WAV input and ignore the data chunk length
-R, --raw Raw PCM input
-S, --stat Save bitrate statistics into file

Options for single input mode only:
-o <filename> Output filename

Options for Raw PCM input only:
--raw-channels <n> Number of channels, default 2
--raw-rate <n> Sample rate, default 44100
--raw-format <str> Sample format, default S16L
Sample format spec:
1st char: S(igned) | U(nsigned) | F(loat)
2nd part: Bitwidth
Last part: L(ittle Endian) | B(ig Endian)
Cases are ignored. u8b is OK.

Tagging options(single input only):
--title <string>
--artist <string>
--band <string>
--album <string>
--grouping <string>
--composer <string>
--comment <string>
--genre <string>
--date <string>
--track <number[/total]>
--disk <number[/total]>
--compilation
_

N.B. I am not the developer of this tool!
_

dansrfe
27th April 2010, 22:16
What are the benefits v.s. Nero AAC Encoder?

b66pak
28th April 2010, 17:30
apple aac encoding engine...
_

Midzuki
28th April 2010, 17:44
apple aac encoding engine...

Is it really better than NeroAACEnc ? :confused:

Of course, you must install the latest Apple QuickTime to run the app.

Is the quality-level worth the bloat? :devil: :D

b66pak
10th May 2010, 18:40
new version...

release 0.05
posted May 9, 2010 3:06 PM by n u

Added cue sheet(*.cue) input support(experimental).

qaac foo.cue

will encode each track into separate m4a files.
_

b66pak
11th May 2010, 20:09
new version...

release 0.06
posted 3 hours ago by n u

Added ADTS output mode(AAC only). This can be used for streaming output to stdout, but tagging is not supported here.

this is very interesting...
_

b66pak
12th May 2010, 19:19
fix bug...

release 0.07
posted 12 hours ago by n u

Fixed a bug: -d option didn't work for cuesheet input.
_

b66pak
21st May 2010, 19:42
bug fix...

release 0.08
posted 16 hours ago by n u

Bugfix: Enabled "--rate" option on TVBR mode.

By this fix, on QuickTime 7.6.5, you might get lower quality output than you specified by "--tvbr" option. On 7.6.6, it should work OK. Therefore, I strongly recommend upgrading QuickTime if you are using 7.6.5.

(I've already upgraded to 7.6.6 and I have no working environment with 7.6.5, so I can't reproduce the problem on 7.6.5, sorry. This is why I used the wording... "might".)
_

b66pak
22nd May 2010, 19:15
new bug fix...

release 0.09
posted 15 hours ago by n u

Now I fixed the problematic "--rate" code.

In release 0.08 post, I've written of QT 7.6.5 specific problem, but it was not. Therefore, I think this version will work in QT 7.6.5 (although I can't test it).
_

Blue_MiSfit
23rd May 2010, 20:55
IIRC, QuickTime's CBR mode is very good when compared to Nero's.

Keiyakusha
23rd May 2010, 21:29
So this is basically qtaacenc with wider support of input formats? Thats the only difference?

b66pak
24th May 2010, 17:35
and the aac (mpeg4 adts) output to stdout...
_

Blue_MiSfit
29th May 2010, 12:09
... and it's an awesomely automatable CLI app :)

SeeMoreDigital
29th May 2010, 13:59
What... Nobody has made a GUI yet!

mackworth
30th May 2010, 00:04
Have a question, hoping someone can help.

I am trying to use this for my subsonic server so I can stream via aac instead of mp3 to my mobile device.

[5/29/10 6:51:18 PM EDT] DEBUG TranscodeInputStream Starting transcoder: [c:\subsonic\transcode\ffmpeg] [-i] [G:\Music\iTunes\Arctic Monkeys\Arctic Monkeys EP\03 Fake Tales Of San Francisco.mp3] [-f] [wav] [-]
[5/29/10 6:51:18 PM EDT] DEBUG TranscodeInputStream Starting transcoder: [c:\subsonic\transcode\qaac] [-a] [128] [--adts] [-] [-]
[5/29/10 6:51:19 PM EDT] DEBUG InputStreamReaderThread (c:\subsonic\transcode\qaac) initializing QTML...done
[5/29/10 6:51:19 PM EDT] DEBUG InputStreamReaderThread (c:\subsonic\transcode\qaac)
[5/29/10 6:51:19 PM EDT] DEBUG InputStreamReaderThread (c:\subsonic\transcode\qaac) QuickTime 7.6.6
[5/29/10 6:51:19 PM EDT] DEBUG InputStreamReaderThread (c:\subsonic\transcode\qaac)
[5/29/10 6:51:19 PM EDT] DEBUG InputStreamReaderThread (c:\subsonic\transcode\qaac)
[5/29/10 6:51:19 PM EDT] DEBUG InputStreamReaderThread (c:\subsonic\transcode\qaac) Method: Average Bit Rate
[5/29/10 6:51:19 PM EDT] DEBUG InputStreamReaderThread (c:\subsonic\transcode\qaac) Bitrate: 128
[5/29/10 6:51:19 PM EDT] DEBUG InputStreamReaderThread (c:\subsonic\transcode\qaac) Quality: Best
[5/29/10 6:51:19 PM EDT] DEBUG InputStreamReaderThread (c:\subsonic\transcode\qaac)
[5/29/10 6:51:19 PM EDT] DEBUG InputStreamReaderThread (c:\subsonic\transcode\qaac) 0/0 samples processed
[5/29/10 6:51:19 PM EDT] DEBUG InputStreamReaderThread (c:\subsonic\transcode\qaac) 0/0 samples processed
[5/29/10 6:51:19 PM EDT] DEBUG InputStreamReaderThread (c:\subsonic\transcode\qaac) Overall bitrate: 2.06719kbps
[5/29/10 6:51:19 PM EDT] DEBUG InputStreamReaderThread (c:\subsonic\transcode\qaac)
[5/29/10 6:51:19 PM EDT] DEBUG InputStreamReaderThread (c:\subsonic\transcode\qaac)
[5/29/10 6:51:19 PM EDT] DEBUG InputStreamReaderThread (c:\subsonic\transcode\qaac) File contains data in an unknown format.

So as shown above, I decoding the mp3 with this command ffmpeg -i %s -f wav - where %s is the file name, and decoding to stdin. And then trying to encode to stout with qaac -a %b --adts - - where %b is the bitrate. %s and %b get filled in automatically by subsonic as shown above. Even if I try:

C:\subsonic\transcode>ffmpeg -i "G:\Music\iTunes\Arctic Monkeys\Arctic Monkeys EP\03 Fake Tales Of San Francisco.mp3" -f wav - | qaac -a 128 -o out.mp4 -

FFmpeg veinritsiailiozinng QSTMVL.N..-r21231-Sherpya, Copyright (c) 2000-2010 F
abrice Bellard, et al.
built on Jan 16 2010 05:42:31 with gcc 4.2.5 20080919 (prerelease) [Sherpya]
libavutil 50. 7. 0 / 50. 7. 0
libavcodec 52.47. 0 / 52.47. 0
libavformat 52.47. 0 / 52.47. 0
libavdevice 52. 2. 0 / 52. 2. 0
libavfilter 1.15. 0 / 1.15. 0
libswscale 0. 8. 0 / 0. 8. 0
libpostproc 51. 2. 0 / 51. 2. 0
[mp3 @ 015ebec0]max_analyze_duration reached
[mp3 @ 015ebec0]Estimating duration from bitrate, this may be inaccurate
Input #0, mp3, from 'G:\Music\iTunes\Arctic Monkeys\Arctic Monkeys EP\03 Fake Ta
les Of San Francisco.mp3':
Metadata:
TPE1 : Arctic Monkeys
TALB : Arctic Monkeys EP
TPE2 : Arctic Monkeys
TIT2 : 03 Fake Tales Of San Francisco
TPUB : Domino/Ada
TYER : 2005
TDRC : 2005
Duration: 00:02:58.17, start: 0.000000, bitrate: 128 kb/s
Stream #0.0: Audio: mp3, 44100 Hz, 2 channels, s16, 128 kb/s
Output #0, wav, to 'pipe:':
Stream #0.0: Audio: pcm_s16le, 44100 Hz, 2 channels, s16, 1411 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Press [q] to stop encoding
[mp3 @ 02b88260]overread, skip -6 enddists: -4 -4
done

QuickTime 7.6.6

<stdin>
Method: Average Bit Rate
Bitrate: 128
Quality: Best
0/0 samples processed
Overall bitrate: 2.06719kbps
av_interleaved_write_frame(): Error while opening file

b66pak
30th May 2010, 16:58
this is working for me:

ffmpeg -i input.mp3 -acodec pcm_f32le -f wav - | sox -t wav --ignore-length - -t wav - | qaac -s -a 128 -o output.mp4 -

i am using sox (http://sox.sourceforge.net/) v14.3.0...
_

mackworth
30th May 2010, 17:59
Interesting, because this fails for me:

c:\subsonic\transcode\ffmpeg -i "G:\Music\iTunes\Ace Of Base\The Bridge\01 Beautiful Life.mp3" -acodec pcm_f32le -f wav - | c:\subsonic\transcode\sox -t wav --ignore-length - -t wav - | qaac -s -a 128 --adts E:\tempACC.aac -

Duration: 00:03:39.27, start: 0.000000, bitrate: 217 kb/s
Stream #0.0: Audio: mp3, 44100 Hz, 2 channels, s16, 32 kb/s
c:\subsonic\transcode\sox WARN wav: wave header missing FmtExt chunk
c:\subsonic\transcode\sox WARN wav: Length in output .wav header will be wrong s
ince can't seek to fix it
Output #0, wav, to 'pipe:':
Stream #0.0: Audio: pcm_f32le, 44100 Hz, 2 channels, flt, 2822 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Press [q] to stop encoding
[mp3 @ 02c48260]Header missing
Error while decoding stream #0.0
E:\tempACC.aac: The system cannot find the file specified.
c:\subsonic\transcode\sox FAIL sox: `-' error writing output file: Broken pipe
av_interleaved_write_frame(): Error while opening file


but this works:

C:\subsonic\transcode>c:\subsonic\transcode\ffmpeg -i "G:\Music\iTunes\Ace Of Ba
se\The Bridge\01 Beautiful Life.mp3" -acodec pcm_f32le -f wav - | c:\subsonic\tr
anscode\sox -t wav --ignore-length - -t wav - | qaac -s -a 128 -o E:\tempAAC.m4a -

Duration: 00:03:39.27, start: 0.000000, bitrate: 217 kb/s
Stream #0.0: Audio: mp3, 44100 Hz, 2 channels, s16, 32 kb/s
Output #0, wav, to 'pipe:':
c:\subsonic\transcode\sox WARN Stream #0.0wav: : Audio: pcm_f32le, 44100 Hz,
2 channels, flt, 2822 kb/swave header missing FmtExt chunk

Sc:\subsonic\transcode\sox WARN twav: rLength in output .wav header will be wron
g since can't seek to fix ite
am mapping:
Stream #0.0 -> #0.0
Press [q] to stop encoding
[mp3 @ 01478260]Header missing
Error while decoding stream #0.0
Error while decoding stream #0.0ate=2822.4kbits/s
size= 75474kB time=219.06 bitrate=2822.4kbits/s
video:0kB audio:75474kB global headers:0kB muxing overhead 0.000088%

So maybe its the --adts mode thats not working for me?

b66pak
30th May 2010, 18:18
you forgot "-o"...line should be:

c:\subsonic\transcode\ffmpeg -i "G:\Music\iTunes\Ace Of Base\The Bridge\01 Beautiful Life.mp3" -acodec pcm_f32le -f wav - | c:\subsonic\transcode\sox -t wav --ignore-length - -t wav - | qaac -s -a 128 --adts -o E:\tempACC.aac -
_

mackworth
30th May 2010, 20:04
You are right, this seems to work:

c:\subsonic\transcode\ffmpeg -i "G:\Music\iTunes\Ace Of Base\
The Bridge\01 Beautiful Life.mp3" -acodec pcm_f32le -f wav - | c:\subsonic\trans
code\sox -t wav --ignore-length - -t wav - | c:\subsonic\transcode\qaac -s -a 12
8 --adts -o - -

It works on the command line, but no subsonic, but atleast I know qaac is working. Thanks a lot :)

b66pak
4th June 2010, 18:39
new version...

release 0.10
posted 6 hours ago by n u

Removed junk MP4 box(trak.udta.name) from the MP4 output, which was produced by libmp4v2.

By this fix, now aacgain can open qaac's MP4 output (Programs like foobar2000, QuickTime and mp4box could open MP4 files produced by qaac with no problem, but I found aacgain couldn't open it).
_

b66pak
29th June 2010, 16:19
new version...

release 0.11
posted 7 hours ago by n u

* Added --nice option for setting lower process priority. In fact, qaac ran at the lowest(idle) priority up to this version. From now on, normal priority is the default, and you can specify --nice if you want qaac run at idle priority.
* Added --ignorelength option. This is for PCM wav source only, and ignore the "data" chunk size. Sometimes you may have to set this if you want to feed qaac from pipeline.
_

SeeMoreDigital
29th June 2010, 16:27
Hi b66pak ,

Are you able to provide a sample please. So I can test in a hardware player?

b66pak
29th June 2010, 17:04
*------*
|sample (http://www.mediafire.com/?nwmn000qmqq)|
*------*

encoding line and log:

qaac --tvbr 127 --quality 2 --rate keep sample.wav -o sample.q127.m4a
initializing QTML...done

QuickTime 7.6.5

sample.wav
Method: Variable Bit Rate
TVBR Quality: 127
Quality: Best
547248/547248 samples processed
Overall bitrate: 249.391kbps

qaac --tvbr 127 --quality 2 --rate keep --adts sample.wav -o sample.q127.aac
initializing QTML...done

QuickTime 7.6.5

sample.wav
Method: Variable Bit Rate
TVBR Quality: 127
Quality: Best
547248/547248 samples processed
Overall bitrate: 249.391kbps
_

SeeMoreDigital
30th June 2010, 22:34
Thanks b66pak.... The samples play fine :)

b66pak
1st July 2010, 18:12
important bug fix...

release 0.12
posted 47 minutes ago by n u

Fixed a bug in the wav parser for --ignorelength option.
_

b66pak
28th July 2010, 18:32
new version...
release 0.13
posted 15 hours ago by n u

Adopted qtaacenc's new feature -- Encoder configs are embedded into metadata.
_

SeeMoreDigital
28th July 2010, 21:06
Does anybody know if there has been any listening tests comparing this AAC encoder with other AAC encoders yet?

b66pak
9th August 2010, 19:16
new feature:
release 0.14
posted 16 hours ago by n u [ updated 16 hours ago ]

Added --downmix option for downmixing multichannel source into mono/stereo.
_

shon3i
9th August 2010, 20:26
@SeeMoreDigital, i think that IgorC preparing some test on HA.org forum, but i don't know is test started yet.

@b66pak, what is general difference between your cli and other from here http://tmkk.hp.infoseek.co.jp/qtaacenc/?

b66pak
10th August 2010, 18:40
I am not the developer of this tool! I edited the first post to reflect this!

qaac support input from various formats, cuesheets and multiple input files (wild card can be used)...can encode to alac and raw aac...can downmix multichannel audio (using qt mixer)...can output aac (mpeg4 adts)
to stdout...
_

b66pak
11th August 2010, 18:28
important bug fix...
release 0.15
posted 2 hours ago by n u

Important bug fix release.

libmp4v2's MP4 optimize function was using temporary file in an inadequate manner by default, and causing problems below:

* Same temporary filename was used between multiple instances of qaac, which resulted in a failure at the end of the encoding stage.
* Tempfile's directory was fixed to "..", which means you might have failed encoding if ".." was not writable.
_

kidjan
7th October 2010, 17:05
I see you're using modified mp4v2 binaries--I'm a developer on that project. If you can give me patches, I can try to integrate them into trunk. In particular I'd be curious if you've made any changes for the trak.udta.name issue, and your changes for the MP4Optimize call would be interesting to see.

let me know over on http://code.google.com/p/mp4v2/

b66pak
7th October 2010, 18:52
I am not the developer of this tool! I edited the first post to reflect this!

you can mail the dev...it is very friendly...(details and sources here: http://sites.google.com/site/qaacpage/home)
_

O.T. when do you plan a new release for mp4v2?
_

kidjan
8th October 2010, 08:40
Thanks--sorry, I missed that!

Re: mp4v2 release, good question. I'd recommend people use r355, as there's some pretty serious issues with 1.9.1 that make using it risky (in particular, see here (http://groups.google.com/group/mp4v2/browse_thread/thread/c19e8203ac2a27f0/1192d9fac9ffcd87?lnk=gst&q=noring#1192d9fac9ffcd87)), and at this point trunk has quite a few bug fixes and enhancements in it. I'd like to release 2.0 in the next month or two if I can whittle down the bug/enhancement list a bit more.

b66pak
8th October 2010, 18:01
new version v0.17...
release 0.17
posted 13 hours ago by n u

I'm sorry, I've written but forgot to open the change log for the previous release (0.16).

New release 0.17 fixed a bug in 0.16 --adts mode:

0.16, with --adts option specified, generated a file named like foo.aac.tmp, not foo.aac

release 0.16
posted Aug 29, 2010 6:14 AM by n u

* Added --no-optimize option. By default, qaac optimizes the MP4 container after encoding has finished. "optimize" means arranging MP4 box in a better order for playing and eliminating unneeded free areas. However, when you run qaac from foobar2000(or something), it will rewrite the MP4 container afterward. In this case, optimizing with qaac will be useless and just a time consuming process.
* Fixed a problem:
When running from dbPoweramp, qaac produced 8.3 DOS-like filename.

It seems that dbPoweramp uses some trick to pass the outfilename to the CLI encoder.

dbPoweramp first creates 0 bytes file with usual long file name, then pass 8.3 DOS format short file name to CLI encoder as a command line. This is maybe in order to avoid the trouble around unicode filenames, which many CLI encoder can't handle correctly.

Therefore, CLI encoder tries to open the file using the 8.3 DOS file name. In Windows file system, this is considered to be identical with the original long file name, therefore original file -- which dbPoweramp has created -- is opened for writing. This is what dbPoweramp expects.

As for qaac, qaac uses a temporary file to optimize the MP4 container file after encoding. Therefore, qaac finally "renames" to the file name passed as a command line (which is a 8.3 DOS-like short file name). And, this result in the 8.3 filename problem, which you don't expect.
_

b66pak
11th October 2010, 19:59
new version...
release 0.18
posted 3 hours ago by n u

Updated libmp4v2 to svn trunk r399. I have rewritten some modules due to the libmp4v2's interface change.

Thanks to Jeremy Noring -- libmp4v2's developer, some of my patches were merged into libmp4v2's trunk.

r399 needs a slight modification to work with qaac, therefore qaac 0.18 still depends on my custom build of libmp4v2. However, I hope I will soon be able to use vanilla libmp4v2.
_

Anakunda
27th October 2011, 23:59
Hello which is highest -q quality, 0 or 2 ?

the_weirdo
28th October 2011, 09:17
Hello which is highest -q quality, 0 or 2 ?

q=2 is highest quality. It's also default value.

Asmodian
29th October 2011, 00:13
I noticed that when pipeing from eac3to to qaac I couldn't get it to work unless I use 16bit audio. Has anyone been sucessful piping 24 or 32 bit audio to qaac?

edit:
I don't know what my issue was, testing again to be sure of the command line and this worked:
eac3to.exe in.mp2 stdout.pcm -24 | qaac.exe -o out.m4a --tvbr 127 --raw --raw-channels 2 --raw-rate 48000 --raw-format S24B -

b66pak
29th October 2011, 03:45
post your command line please...
_

Asmodian
29th October 2011, 04:44
Sorry I took a long time editing my above post to add command line and didn't see your request, I wouldn't have edited if there had been a reply. :(

Any ideas for 32 bit audio? I think I just don't know how to get raw 32 bit out of eac3to. Sorry I think my issue is with the wrong tool for this thread.

tebasuna51
29th October 2011, 13:02
Maybe with:
eac3to.exe in.mp2 stdout.wav | qaac.exe -o out.m4a --tvbr 127 --ignorelength -

24 bits (default for eac3to) is enough for a mp2 source.

Asmodian
29th October 2011, 21:41
Thanks.

Yes, I have learned that for this source (and many other sources) I will not get anything by going above 24 bit. eac3to is smart enough to not give me extra useless bit depth.

kypec
26th March 2013, 21:11
Can anyone explain to me what is the difference between --abr and --cvbr modes when encoding at the same target bitrate, 80kbps for instance?:confused:
I know that both output files will have ~80kbps variable bitrate so what would be the reason to pick one in favor of the other mode?
Does ABR allow bigger fluctuations of actual bitrate throughout the file?
Does CVBR mode apply narrow bitrate limits in which the average (desired) bitrate can fluctuate?

==EDIT==
Found this Technical Note TN2237 (http://developer.apple.com/library/mac/#technotes/tn2237/_index.html) where different encoding strategies are explained in detail:
Encoding Strategy

These encoding strategies (a.k.a bit rate control modes) are used with the -s parameter in afconvert and the kAudioCodecPropertyBitRateControlMode (AudioUnit/AudioCodec.h) property.

Constant Bit Rate (CBR) kAudioCodecBitRateControlMode_Constant - Recommended for live streaming.

This mode achieves a constant target bit rate and is completely compliant to the CBR mode specified in the MPEG-4 standard. This mode is suitable for constant-bit-rate network transmission when decoding in real-time with a fixed end-to-end audio delay. However, due to the strict constant bit rate constraint, this mode offers the lowest audio quality and highest complexity among all the encoding modes offered.

Average Bit Rate (ABR) kAudioCodecBitRateControlMode_LongTermAverage - Default Mode, recommended for controlling file size.

A target bit rate is achieved over a long term average (typically after the first few seconds of encoding). Unlike the CBR mode, this mode does not provide constant delay when using constant bit rate transmission, but provides best overall quality while still being able to strictly control the resulting file size with less complexity than the CBR mode.

Variable Bit Rate (VBR) kAudioCodecBitRateControlMode_Variable - Recommended for controlling audio quality.

The audio signal is encoded with constant (and settable) quality and virtually no bit rate constraints. This is the best mode to achieve consistent audio quality across many files and the smallest file size to achieve that quality. It also has the lowest complexity of all the encoding modes.

Variable Bit Rate But Constrained (VBR Constrained) kAudioCodecBitRateControlMode_VariableConstrained - Recommended as a compromise between VBR and ABR.

This mode is similar to VBR but limits the average bit rate variation. The lower limit is the user-selected bit rate. Higher bit rate is adapted for difficult tracks and can generate larger files than the ABR mode.

I seem to go with ABR then when more predictable bitrate/filesize is required for my purposes.

kotuwa
8th September 2014, 10:37
q=2 is highest quality. It's also default value.
Why is 2 the highest quality?
Usually Other encoders use lower values for high quality and higher value for lower quality neh!
Like Lame, x264, x265, Xvid etc...
If I did not see this, without knowing I was going to use -q 0
:sly:

detmek
8th September 2014, 11:31
Because Apple set it that way. Qaac only follows what Apple Coreaudio uses. And you shouldn't really change default values if you don't know what those values mean or you didn't read manual, right?

BTW, with x264/5, Xvid ect... only CRF/QP scale uses lower values for higher quality. Every other setting uses higher value for higher quality (me, subme).

kotuwa
8th September 2014, 22:14
BTW, with x264/5, Xvid ect... only CRF/QP scale uses lower values for higher quality. Every other setting uses higher value for higher quality (me, subme).
More close related with LAME vbr quality and encoding quality as it is audio...
in x264 etc most of those things u mention related to number or number range, not quality, so it is being literal... :D

kotuwa
8th September 2014, 22:19
hey BTW...
After converting AC3 5.1 into AAC 5.1 M4A using QAAC
it shows
Channel count : 2 channels
Original Channel count : 6 channels
Channel positions : Front: L C R, Side: L R, LFE
Why it show 2 channels :confused:

SeeMoreDigital
8th September 2014, 22:21
hey BTW...
After converting AC3 5.1 into AAC 5.1 M4A using QAAC
it shows
Channel count : 2 channels
Original Channel count : 6 channels
Channel positions : Front: L C R, Side: L R, LFEWhy it show 2 channels :confused:
What application gave you that information?

sneaker_ger
8th September 2014, 22:25
MediaInfo, probably. We had a discussion about that recently:
http://www.hydrogenaud.io/forums/index.php?showtopic=85135&view=findpost&p=867076