mirror of https://github.com/nu774/fdkaac.git
498 lines
7.8 KiB
Groff
498 lines
7.8 KiB
Groff
.TH FDKAAC 1 "November, 2013"
|
|
.SH NAME
|
|
.PP
|
|
fdkaac - command line frontend for libfdk-aac encoder \
|
|
.SH SYNOPSIS
|
|
.PP
|
|
\f[B]fdkaac\f[] [OPTIONS] [FILE]
|
|
.SH DESCRIPTION
|
|
.PP
|
|
\f[B]fdkaac\f[] reads linear PCM audio in either WAV, raw PCM, or CAF
|
|
format, and encodes it into either M4A / AAC file.
|
|
.PP
|
|
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 transport formats are selected by \f[B]-f\f[].
|
|
.PP
|
|
When CAF input and M4A output is used, tags in CAF file are copied into
|
|
the resulting M4A.
|
|
\
|
|
.SH OPTIONS
|
|
.TP
|
|
.B -h, --help
|
|
Show command help
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B -o <FILE>
|
|
Output filename.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B -p, --profile <n>
|
|
Target profile (MPEG4 audio object type, AOT)
|
|
.RS
|
|
.TP
|
|
.B 2
|
|
MPEG-4 AAC LC (default)
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 5
|
|
MPEG-4 HE-AAC (SBR)
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 29
|
|
MPEG-4 HE-AAC v2 (SBR+PS)
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 23
|
|
MPEG-4 AAC LD
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 39
|
|
MPEG-4 AAC ELD
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 129
|
|
MPEG-2 AAC LC
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 132
|
|
MPEG-2 HE-AAC (SBR)
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 156
|
|
MPEG-2 HE-AAC v2 (SBR+PS)
|
|
.RS
|
|
.RE
|
|
.RE
|
|
.TP
|
|
.B -b, --bitrate <n>
|
|
Target bitrate (for CBR)
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B -m, --bitrate-mode <n>
|
|
Bitrate configuration mode.
|
|
Available VBR quality value depends on other parameters such as profile,
|
|
sample rate, or number of channels.
|
|
.RS
|
|
.TP
|
|
.B 0
|
|
CBR (default)
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 1-5
|
|
VBR (higher value -> higher bitrate)
|
|
.RS
|
|
.RE
|
|
.RE
|
|
.TP
|
|
.B -w, --bandwith <n>
|
|
Frequency bandwith (lowpass cut-off frequency) in Hz.
|
|
Available on AAC LC only.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B -a, --afterburner <n>
|
|
Configure afterburner mode.
|
|
When enabled, quality is increased at the expense of additional
|
|
computational workload.
|
|
.RS
|
|
.TP
|
|
.B 0
|
|
Off
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 1
|
|
On (default)
|
|
.RS
|
|
.RE
|
|
.RE
|
|
.TP
|
|
.B -L, --lowdelay-sbr <n>
|
|
Configure SBR activity on AAC ELD.
|
|
.RS
|
|
.TP
|
|
.B -1
|
|
Use ELD SBR auto configuration
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 0
|
|
Disable SBR on ELD (default)
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 1
|
|
Enable SBR on ELD
|
|
.RS
|
|
.RE
|
|
.RE
|
|
.TP
|
|
.B -s, --sbr-ratio <n>
|
|
Controls activation of downsampled SBR.
|
|
.RS
|
|
.TP
|
|
.B 0
|
|
Use lib default (default)
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 1
|
|
Use downsampled SBR (default for ELD+SBR)
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 2
|
|
Use dual-rate SBR (default for HE-AAC)
|
|
.RS
|
|
.RE
|
|
.PP
|
|
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.
|
|
.PP
|
|
Downsampled SBR is newly introduced feature in FDK encoder library
|
|
version 3.4.12.
|
|
When libfdk-aac in the system doesn\[aq]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.
|
|
.PP
|
|
Note that downsampled HE-AAC is not so common as dual-rate one.
|
|
When downsampled HE-AAC is selected, \f[B]fdkaac\f[] is forced to choose
|
|
explicit hierarchical SBR signaling, which (at least) iTunes doesn\[aq]t
|
|
accept.
|
|
.RE
|
|
.TP
|
|
.B -f, --transport-format <n>
|
|
Transport format.
|
|
Tagging and gapless playback is only available on M4A.
|
|
Streaming to stdout is only available on others.
|
|
.RS
|
|
.TP
|
|
.B 0
|
|
M4A (default)
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 1
|
|
ADIF
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 2
|
|
ADTS
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 6
|
|
LATM MCP=1
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 7
|
|
LATM MCP=0
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 10
|
|
LOAS/LATM (LATM within LOAS)
|
|
.RS
|
|
.RE
|
|
.RE
|
|
.TP
|
|
.B -C, --adts-crc-check
|
|
Add CRC protection on ADTS header.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B -h, --header-period <n>
|
|
StreamMuxConfig/PCE repetition period in the transport layer.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B -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.
|
|
.RS
|
|
.TP
|
|
.B 0
|
|
iTunSMPB (default)
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 1
|
|
ISO standard (edts and sgpd)
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 2
|
|
Both
|
|
.RS
|
|
.RE
|
|
.RE
|
|
.TP
|
|
.B --include-sbr-delay
|
|
When specified, count SBR decoder delay in encoder delay.
|
|
.RS
|
|
.PP
|
|
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.
|
|
.PP
|
|
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.
|
|
.PP
|
|
However, it\[aq]s better not to choose SBR at all if you want gapless
|
|
playback.
|
|
LC doesn\[aq]t have such issues.
|
|
.RE
|
|
.TP
|
|
.B -I, --ignorelength
|
|
Ignore length field of data chunk in input WAV file.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B -S, --silent
|
|
Don\[aq]t print progress messages.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B --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.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B -R, --raw
|
|
Regard input as raw PCM.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B --raw-channels <n>
|
|
Specify number of channels of raw input (default: 2)
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B --raw-rate <n>
|
|
Specify sample rate of raw input (default: 44100)
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B --raw-format <spec>
|
|
Specify sample format of raw input (default: "S16L").
|
|
\f[B]Spec\f[] is as the following (case insensitive):
|
|
.RS
|
|
.TP
|
|
.B 1st char -- type of sample
|
|
\f[B]S\f[] (igned) | \f[B]U\f[] (nsigned) | \f[B]F\f[] (loat)
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 2nd part (in digits)
|
|
bits per channel
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B Last char -- endianness (can be omitted)
|
|
\f[B]L\f[] (ittle, default) | \f[B]B\f[] (ig)
|
|
.RS
|
|
.RE
|
|
.RE
|
|
.TP
|
|
.B --title <string>
|
|
Set title tag.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B --artist <string>
|
|
Set artist tag.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B --album <string>
|
|
Set album tag.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B --genre <string>
|
|
Set genre tag.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B --date <string>
|
|
Set date tag.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B --composer <string>
|
|
Set composer tag.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B --grouping <string>
|
|
Set grouping tag.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B --comment <string>
|
|
Set comment tag.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B --album-artist <string>
|
|
Set album artist tag.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B --track <number[/total]>
|
|
Set track tag, with or without number of total tracks.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B --disk <number[/total]>
|
|
Set disk tag, with or without number of total discs.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B --tempo <n>
|
|
Set tempo (BPM) tag.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B --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 \f[B]fcc\f[] when it is the copyright sign.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B --tag-from-file <fcc>:<filename>
|
|
Same as --tag, but set content of file as tag value.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B --long-tag <name>:<value>
|
|
Set arbitrary tag as iTunes custom metadata.
|
|
Stored in com.apple.iTunes field.
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B --tag-from-json <filename[?dot_notation]>
|
|
Read tags from JSON.
|
|
By default, tags are assumed to be direct children of the root object in
|
|
JSON.
|
|
Optionally you can specify arbitrary dot notation to locate the object
|
|
containing tags.
|
|
.RS
|
|
.RE
|
|
.PP
|
|
\
|
|
.SH EXAMPLES
|
|
.PP
|
|
Encode WAV file into a M4A file.
|
|
MPEG4 AAC LC, VBR quality 3:
|
|
.IP
|
|
.nf
|
|
\f[C]
|
|
fdkaac\ -m3\ foo.wav
|
|
\f[]
|
|
.fi
|
|
.PP
|
|
Encode WAV file into a M4A file.
|
|
MPEG4 HE-AAC, bitrate 64kbps:
|
|
.IP
|
|
.nf
|
|
\f[C]
|
|
fdkaac\ -p5\ -b64\ foo.wav
|
|
\f[]
|
|
.fi
|
|
.PP
|
|
Piping from \f[B]ffmpeg\f[] (you need version supporting CAF output):
|
|
.IP
|
|
.nf
|
|
\f[C]
|
|
ffmpeg\ -i\ foo.flac\ -f\ caf\ -\ |\ fdkaac\ -b128\ -\ -o\ foo.m4a
|
|
\f[]
|
|
.fi
|
|
.PP
|
|
Import tags via json:
|
|
.IP
|
|
.nf
|
|
\f[C]
|
|
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
|
|
\f[]
|
|
.fi
|
|
.SH NOTES
|
|
.PP
|
|
Upto 32bit integer or 64bit floating point format is supported as input.
|
|
However, FDK library is implemented based on fixed point math and only
|
|
supports 16bit integer PCM.
|
|
Therefore, be wary of clipping.
|
|
You might want to dither/noise shape beforehand when your input has
|
|
higher resolution.
|
|
.PP
|
|
Following channel layouts are supported by the encoder.
|
|
.TP
|
|
.B 1ch
|
|
C
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 2ch
|
|
L R
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 3ch
|
|
C L R
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 4ch
|
|
C L R Cs
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 5ch
|
|
C L R Ls Rs
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 5.1ch
|
|
C L R Ls Rs LFE
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 7.1ch (front)
|
|
C Lc Rc L R Ls Rs LFE
|
|
.RS
|
|
.RE
|
|
.TP
|
|
.B 7.1ch (rear)
|
|
C L R Ls Rs Rls Rrs LFE
|
|
.RS
|
|
.RE
|
|
.SH AUTHORS
|
|
nu774 <honeycomb77@gmail.com>.
|