2013-11-04 07:33:01 +01:00
|
|
|
% FDKAAC(1)
|
|
|
|
% nu774 <honeycomb77@gmail.com>
|
|
|
|
% November, 2013
|
|
|
|
|
|
|
|
NAME
|
|
|
|
====
|
|
|
|
|
2013-11-18 05:52:35 +01:00
|
|
|
fdkaac - command line frontend for libfdk-aac encoder
|
2013-11-04 07:33:01 +01:00
|
|
|
|
|
|
|
SYNOPSIS
|
|
|
|
========
|
|
|
|
|
|
|
|
**fdkaac** [OPTIONS] [FILE]
|
|
|
|
|
|
|
|
DESCRIPTION
|
|
|
|
===========
|
|
|
|
|
|
|
|
**fdkaac** reads linear PCM audio in either WAV, raw PCM, or CAF format,
|
|
|
|
and encodes it into either M4A / AAC file.
|
|
|
|
|
|
|
|
If the input file is "-", data is read from stdin. Likewise, if the
|
|
|
|
output file is "-", data is written to stdout if one of streamable AAC
|
2013-11-05 07:45:08 +01:00
|
|
|
transport formats are selected by **-f**.
|
2013-11-04 07:33:01 +01:00
|
|
|
|
|
|
|
When CAF input and M4A output is used, tags in CAF file are copied into
|
2013-11-18 05:52:35 +01:00
|
|
|
the resulting M4A.
|
2013-11-04 07:33:01 +01:00
|
|
|
|
|
|
|
OPTIONS
|
|
|
|
=======
|
|
|
|
|
|
|
|
-h, --help
|
|
|
|
: Show command help
|
|
|
|
|
|
|
|
-o \<FILE\>
|
|
|
|
: Output filename.
|
|
|
|
|
|
|
|
-p, --profile \<n\>
|
|
|
|
: Target profile (MPEG4 audio object type, AOT)
|
|
|
|
|
|
|
|
2
|
|
|
|
: MPEG-4 AAC LC (default)
|
|
|
|
|
|
|
|
5
|
|
|
|
: MPEG-4 HE-AAC (SBR)
|
|
|
|
|
|
|
|
29
|
|
|
|
: MPEG-4 HE-AAC v2 (SBR+PS)
|
|
|
|
|
|
|
|
23
|
|
|
|
: MPEG-4 AAC LD
|
|
|
|
|
|
|
|
39
|
|
|
|
: MPEG-4 AAC ELD
|
|
|
|
|
|
|
|
129
|
|
|
|
: MPEG-2 AAC LC
|
|
|
|
|
|
|
|
132
|
|
|
|
: MPEG-2 HE-AAC (SBR)
|
|
|
|
|
|
|
|
156
|
|
|
|
: MPEG-2 HE-AAC v2 (SBR+PS)
|
|
|
|
|
|
|
|
-b, --bitrate \<n\>
|
|
|
|
: Target bitrate (for CBR)
|
|
|
|
|
|
|
|
-m, --bitrate-mode \<n\>
|
|
|
|
: Bitrate configuration mode. Available VBR quality value depends on
|
|
|
|
other parameters such as profile, sample rate, or number of
|
|
|
|
channels.
|
|
|
|
|
|
|
|
0
|
|
|
|
: CBR (default)
|
|
|
|
|
|
|
|
1-5
|
|
|
|
: VBR (higher value -\> higher bitrate)
|
|
|
|
|
2013-11-18 05:48:39 +01:00
|
|
|
-w, --bandwidth \<n\>
|
|
|
|
: Frequency bandwidth (lowpass cut-off frequency) in Hz. Available on
|
2013-11-04 07:33:01 +01:00
|
|
|
AAC LC only.
|
|
|
|
|
|
|
|
-a, --afterburner \<n\>
|
|
|
|
: Configure afterburner mode. When enabled, quality is increased at
|
|
|
|
the expense of additional computational workload.
|
|
|
|
|
|
|
|
0
|
|
|
|
: Off
|
|
|
|
|
|
|
|
1
|
|
|
|
: On (default)
|
|
|
|
|
|
|
|
-L, --lowdelay-sbr \<n\>
|
|
|
|
: Configure SBR activity on AAC ELD.
|
|
|
|
|
|
|
|
-1
|
|
|
|
: Use ELD SBR auto configuration
|
|
|
|
|
|
|
|
0
|
|
|
|
: Disable SBR on ELD (default)
|
|
|
|
|
|
|
|
1
|
|
|
|
: Enable SBR on ELD
|
|
|
|
|
|
|
|
-s, --sbr-ratio \<n\>
|
|
|
|
: Controls activation of downsampled SBR.
|
|
|
|
|
|
|
|
0
|
|
|
|
: Use lib default (default)
|
|
|
|
|
|
|
|
1
|
|
|
|
: Use downsampled SBR (default for ELD+SBR)
|
|
|
|
|
|
|
|
2
|
|
|
|
: Use dual-rate SBR (default for HE-AAC)
|
|
|
|
|
|
|
|
Dual-rate SBR is what is normally used for HE-AAC, where AAC is
|
|
|
|
encoded at half the sample rate of SBR, hence "dual rate". On the
|
|
|
|
other hand, downsampled SBR uses same sample rate for both of AAC
|
|
|
|
and SBR (single rate), therefore downsampled SBR typically consumes
|
|
|
|
more bitrate.
|
|
|
|
|
|
|
|
Downsampled SBR is newly introduced feature in FDK encoder library
|
|
|
|
version 3.4.12. When libfdk-aac in the system doesn't support this,
|
|
|
|
dual-rate SBR will be used. When available, dual-rate SBR is the
|
|
|
|
default for HE-AAC and downsampled SBR is the default for ELD+SBR.
|
|
|
|
|
|
|
|
Note that downsampled HE-AAC is not so common as dual-rate one. When
|
|
|
|
downsampled HE-AAC is selected, **fdkaac** is forced to choose
|
|
|
|
explicit hierarchical SBR signaling, which (at least) iTunes doesn't
|
|
|
|
accept.
|
|
|
|
|
|
|
|
-f, --transport-format \<n\>
|
|
|
|
: Transport format. Tagging and gapless playback is only available on
|
|
|
|
M4A. Streaming to stdout is only available on others.
|
|
|
|
|
|
|
|
0
|
|
|
|
: M4A (default)
|
|
|
|
|
|
|
|
1
|
|
|
|
: ADIF
|
|
|
|
|
|
|
|
2
|
|
|
|
: ADTS
|
|
|
|
|
|
|
|
6
|
|
|
|
: LATM MCP=1
|
|
|
|
|
|
|
|
7
|
|
|
|
: LATM MCP=0
|
|
|
|
|
|
|
|
10
|
|
|
|
: LOAS/LATM (LATM within LOAS)
|
|
|
|
|
|
|
|
-C, --adts-crc-check
|
|
|
|
: Add CRC protection on ADTS header.
|
|
|
|
|
|
|
|
-h, --header-period \<n\>
|
2013-11-05 07:45:08 +01:00
|
|
|
: StreamMuxConfig/PCE repetition period in the transport layer.
|
2013-11-04 07:33:01 +01:00
|
|
|
|
|
|
|
-G, --gapless-mode \<n\>
|
|
|
|
: Method to declare amount of encoder delay (and padding) in M4A
|
|
|
|
container. These values are mandatory for proper gapless playback on
|
|
|
|
player side.
|
|
|
|
|
|
|
|
0
|
|
|
|
: iTunSMPB (default)
|
|
|
|
|
|
|
|
1
|
|
|
|
: ISO standard (edts and sgpd)
|
|
|
|
|
|
|
|
2
|
|
|
|
: Both
|
|
|
|
|
|
|
|
--include-sbr-delay
|
|
|
|
: When specified, count SBR decoder delay in encoder delay.
|
|
|
|
|
|
|
|
This is not iTunes compatible and will lead to gapless playback
|
|
|
|
issue on LC only decoder, but this is the default behavior of FDK
|
|
|
|
library.
|
|
|
|
|
|
|
|
Whether counting SBR decoder delay in encoder delay or not result in
|
|
|
|
incompatibility in gapless playback. You should pick which one will
|
|
|
|
work for your favorite player.
|
|
|
|
|
|
|
|
However, it's better not to choose SBR at all if you want gapless
|
|
|
|
playback. LC doesn't have such issues.
|
|
|
|
|
|
|
|
-I, --ignorelength
|
|
|
|
: Ignore length field of data chunk in input WAV file.
|
|
|
|
|
|
|
|
-S, --silent
|
|
|
|
: Don't print progress messages.
|
|
|
|
|
|
|
|
--moov-before-mdat
|
|
|
|
: Place moov box before mdat box in M4A container. This option might
|
|
|
|
be important for some hardware players, that are known to refuse
|
|
|
|
moov box placed after mdat box.
|
|
|
|
|
|
|
|
-R, --raw
|
|
|
|
: Regard input as raw PCM.
|
|
|
|
|
|
|
|
--raw-channels \<n\>
|
|
|
|
: Specify number of channels of raw input (default: 2)
|
|
|
|
|
|
|
|
--raw-rate \<n\>
|
|
|
|
: Specify sample rate of raw input (default: 44100)
|
|
|
|
|
|
|
|
--raw-format \<spec\>
|
|
|
|
: Specify sample format of raw input (default: "S16L"). **Spec** is as
|
|
|
|
the following (case insensitive):
|
|
|
|
|
|
|
|
1st char -- type of sample
|
|
|
|
: **S** (igned) | **U** (nsigned) | **F** (loat)
|
|
|
|
|
|
|
|
2nd part (in digits)
|
|
|
|
: bits per channel
|
|
|
|
|
2013-11-05 07:45:08 +01:00
|
|
|
Last char -- endianness (can be omitted)
|
2013-11-04 07:33:01 +01:00
|
|
|
: **L** (ittle, default) | **B** (ig)
|
|
|
|
|
|
|
|
--title \<string\>
|
|
|
|
: Set title tag.
|
|
|
|
|
|
|
|
--artist \<string\>
|
|
|
|
: Set artist tag.
|
|
|
|
|
|
|
|
--album \<string\>
|
|
|
|
: Set album tag.
|
|
|
|
|
|
|
|
--genre \<string\>
|
|
|
|
: Set genre tag.
|
|
|
|
|
|
|
|
--date \<string\>
|
|
|
|
: Set date tag.
|
|
|
|
|
|
|
|
--composer \<string\>
|
|
|
|
: Set composer tag.
|
|
|
|
|
|
|
|
--grouping \<string\>
|
|
|
|
: Set grouping tag.
|
|
|
|
|
|
|
|
--comment \<string\>
|
|
|
|
: Set comment tag.
|
|
|
|
|
|
|
|
--album-artist \<string\>
|
|
|
|
: Set album artist tag.
|
|
|
|
|
|
|
|
--track \<number[/total]\>
|
|
|
|
: Set track tag, with or without number of total tracks.
|
|
|
|
|
|
|
|
--disk \<number[/total]\>
|
|
|
|
: Set disk tag, with or without number of total discs.
|
|
|
|
|
|
|
|
--tempo \<n\>
|
|
|
|
: Set tempo (BPM) tag.
|
|
|
|
|
|
|
|
--tag \<fcc\>:\<value\>
|
|
|
|
: Set iTunes predefined tag with explicit fourcc key and value. See
|
|
|
|
[https://code.google.com/p/mp4v2/wiki/iTunesMetadata](https://code.google.com/p/mp4v2/wiki/iTunesMetadata)
|
|
|
|
for known predefined keys. You can omit first char of **fcc** when
|
|
|
|
it is the copyright sign.
|
|
|
|
|
|
|
|
--tag-from-file \<fcc\>:\<filename\>
|
|
|
|
: Same as --tag, but set content of file as tag value.
|
|
|
|
|
|
|
|
--long-tag \<name\>:\<value\>
|
|
|
|
: Set arbitrary tag as iTunes custom metadata. Stored in
|
|
|
|
com.apple.iTunes field.
|
|
|
|
|
|
|
|
--tag-from-json \<filename[?dot\_notation]\>
|
|
|
|
: Read tags from JSON. By default, tags are assumed to be direct
|
2013-11-05 07:45:08 +01:00
|
|
|
children of the root object in JSON. Optionally you can specify
|
2013-11-04 07:33:01 +01:00
|
|
|
arbitrary dot notation to locate the object containing tags.
|
2013-11-18 05:52:35 +01:00
|
|
|
|
2013-11-04 07:33:01 +01:00
|
|
|
|
|
|
|
EXAMPLES
|
|
|
|
========
|
|
|
|
|
|
|
|
Encode WAV file into a M4A file. MPEG4 AAC LC, VBR quality 3:
|
|
|
|
|
|
|
|
fdkaac -m3 foo.wav
|
|
|
|
|
|
|
|
Encode WAV file into a M4A file. MPEG4 HE-AAC, bitrate 64kbps:
|
|
|
|
|
|
|
|
fdkaac -p5 -b64 foo.wav
|
|
|
|
|
|
|
|
Piping from **ffmpeg** (you need version supporting CAF output):
|
|
|
|
|
|
|
|
ffmpeg -i foo.flac -f caf - | fdkaac -b128 - -o foo.m4a
|
|
|
|
|
|
|
|
Import tags via json:
|
|
|
|
|
|
|
|
ffprobe -v 0 -of json -show_format foo.flac >foo.json
|
|
|
|
|
|
|
|
flac -dc foo.flac | \
|
|
|
|
fdkaac - -ox.m4a -m2 --import-tag-from-json=foo.json?format.tags
|
|
|
|
|
|
|
|
NOTES
|
|
|
|
=====
|
|
|
|
|
|
|
|
Upto 32bit integer or 64bit floating point format is supported as input.
|
|
|
|
However, FDK library is implemented based on fixed point math and only
|
2013-11-05 07:45:08 +01:00
|
|
|
supports 16bit integer PCM. Therefore, be wary of clipping. You might
|
2013-11-04 07:33:01 +01:00
|
|
|
want to dither/noise shape beforehand when your input has higher
|
|
|
|
resolution.
|
|
|
|
|
|
|
|
Following channel layouts are supported by the encoder.
|
|
|
|
|
|
|
|
1ch
|
|
|
|
: C
|
|
|
|
|
|
|
|
2ch
|
|
|
|
: L R
|
|
|
|
|
|
|
|
3ch
|
|
|
|
: C L R
|
|
|
|
|
|
|
|
4ch
|
|
|
|
: C L R Cs
|
|
|
|
|
|
|
|
5ch
|
|
|
|
: C L R Ls Rs
|
|
|
|
|
|
|
|
5.1ch
|
|
|
|
: C L R Ls Rs LFE
|
|
|
|
|
|
|
|
7.1ch (front)
|
|
|
|
: C Lc Rc L R Ls Rs LFE
|
|
|
|
|
|
|
|
7.1ch (rear)
|
|
|
|
: C L R Ls Rs Rls Rrs LFE
|
|
|
|
|