| 1 | % FDKAAC(1) |
| 2 | % nu774 <honeycomb77@gmail.com> |
| 3 | % November, 2013 |
| 4 | |
| 5 | NAME |
| 6 | ==== |
| 7 | |
| 8 | fdkaac - command line frontend for libfdk-aac encoder |
| 9 | |
| 10 | SYNOPSIS |
| 11 | ======== |
| 12 | |
| 13 | **fdkaac** [OPTIONS] [FILE] |
| 14 | |
| 15 | DESCRIPTION |
| 16 | =========== |
| 17 | |
| 18 | **fdkaac** reads linear PCM audio in either WAV, raw PCM, or CAF format, |
| 19 | and encodes it into either M4A / AAC file. |
| 20 | |
| 21 | If the input file is "-", data is read from stdin. Likewise, if the |
| 22 | output file is "-", data is written to stdout if one of streamable AAC |
| 23 | transport formats are selected by **-f**. |
| 24 | |
| 25 | When CAF input and M4A output is used, tags in CAF file are copied into |
| 26 | the resulting M4A. |
| 27 | |
| 28 | OPTIONS |
| 29 | ======= |
| 30 | |
| 31 | -h, --help |
| 32 | : Show command help |
| 33 | |
| 34 | -o \<FILE\> |
| 35 | : Output filename. |
| 36 | |
| 37 | -p, --profile \<n\> |
| 38 | : Target profile (MPEG4 audio object type, AOT) |
| 39 | |
| 40 | 2 |
| 41 | : MPEG-4 AAC LC (default) |
| 42 | |
| 43 | 5 |
| 44 | : MPEG-4 HE-AAC (SBR) |
| 45 | |
| 46 | 29 |
| 47 | : MPEG-4 HE-AAC v2 (SBR+PS) |
| 48 | |
| 49 | 23 |
| 50 | : MPEG-4 AAC LD |
| 51 | |
| 52 | 39 |
| 53 | : MPEG-4 AAC ELD |
| 54 | |
| 55 | 129 |
| 56 | : MPEG-2 AAC LC |
| 57 | |
| 58 | 132 |
| 59 | : MPEG-2 HE-AAC (SBR) |
| 60 | |
| 61 | 156 |
| 62 | : MPEG-2 HE-AAC v2 (SBR+PS) |
| 63 | |
| 64 | -b, --bitrate \<n\> |
| 65 | : Target bitrate (for CBR) |
| 66 | |
| 67 | -m, --bitrate-mode \<n\> |
| 68 | : Bitrate configuration mode. Available VBR quality value depends on |
| 69 | other parameters such as profile, sample rate, or number of |
| 70 | channels. |
| 71 | |
| 72 | 0 |
| 73 | : CBR (default) |
| 74 | |
| 75 | 1-5 |
| 76 | : VBR (higher value -\> higher bitrate) |
| 77 | |
| 78 | -w, --bandwidth \<n\> |
| 79 | : Frequency bandwidth (lowpass cut-off frequency) in Hz. Available on |
| 80 | AAC LC only. |
| 81 | |
| 82 | -a, --afterburner \<n\> |
| 83 | : Configure afterburner mode. When enabled, quality is increased at |
| 84 | the expense of additional computational workload. |
| 85 | |
| 86 | 0 |
| 87 | : Off |
| 88 | |
| 89 | 1 |
| 90 | : On (default) |
| 91 | |
| 92 | -L, --lowdelay-sbr \<n\> |
| 93 | : Configure SBR activity on AAC ELD. |
| 94 | |
| 95 | -1 |
| 96 | : Use ELD SBR auto configuration |
| 97 | |
| 98 | 0 |
| 99 | : Disable SBR on ELD (default) |
| 100 | |
| 101 | 1 |
| 102 | : Enable SBR on ELD |
| 103 | |
| 104 | -s, --sbr-ratio \<n\> |
| 105 | : Controls activation of downsampled SBR. |
| 106 | |
| 107 | 0 |
| 108 | : Use lib default (default) |
| 109 | |
| 110 | 1 |
| 111 | : Use downsampled SBR (default for ELD+SBR) |
| 112 | |
| 113 | 2 |
| 114 | : Use dual-rate SBR (default for HE-AAC) |
| 115 | |
| 116 | Dual-rate SBR is what is normally used for HE-AAC, where AAC is |
| 117 | encoded at half the sample rate of SBR, hence "dual rate". On the |
| 118 | other hand, downsampled SBR uses same sample rate for both of AAC |
| 119 | and SBR (single rate), therefore downsampled SBR typically consumes |
| 120 | more bitrate. |
| 121 | |
| 122 | Downsampled SBR is newly introduced feature in FDK encoder library |
| 123 | version 3.4.12. When libfdk-aac in the system doesn't support this, |
| 124 | dual-rate SBR will be used. When available, dual-rate SBR is the |
| 125 | default for HE-AAC and downsampled SBR is the default for ELD+SBR. |
| 126 | |
| 127 | Note that downsampled HE-AAC is not so common as dual-rate one. When |
| 128 | downsampled HE-AAC is selected, **fdkaac** is forced to choose |
| 129 | explicit hierarchical SBR signaling, which (at least) iTunes doesn't |
| 130 | accept. |
| 131 | |
| 132 | -f, --transport-format \<n\> |
| 133 | : Transport format. Tagging and gapless playback is only available on |
| 134 | M4A. Streaming to stdout is only available on others. |
| 135 | |
| 136 | 0 |
| 137 | : M4A (default) |
| 138 | |
| 139 | 1 |
| 140 | : ADIF |
| 141 | |
| 142 | 2 |
| 143 | : ADTS |
| 144 | |
| 145 | 6 |
| 146 | : LATM MCP=1 |
| 147 | |
| 148 | 7 |
| 149 | : LATM MCP=0 |
| 150 | |
| 151 | 10 |
| 152 | : LOAS/LATM (LATM within LOAS) |
| 153 | |
| 154 | -C, --adts-crc-check |
| 155 | : Add CRC protection on ADTS header. |
| 156 | |
| 157 | -h, --header-period \<n\> |
| 158 | : StreamMuxConfig/PCE repetition period in the transport layer. |
| 159 | |
| 160 | -G, --gapless-mode \<n\> |
| 161 | : Method to declare amount of encoder delay (and padding) in M4A |
| 162 | container. These values are mandatory for proper gapless playback on |
| 163 | player side. |
| 164 | |
| 165 | 0 |
| 166 | : iTunSMPB (default) |
| 167 | |
| 168 | 1 |
| 169 | : ISO standard (edts and sgpd) |
| 170 | |
| 171 | 2 |
| 172 | : Both |
| 173 | |
| 174 | --include-sbr-delay |
| 175 | : When specified, count SBR decoder delay in encoder delay. |
| 176 | |
| 177 | This is not iTunes compatible and will lead to gapless playback |
| 178 | issue on LC only decoder, but this is the default behavior of FDK |
| 179 | library. |
| 180 | |
| 181 | Whether counting SBR decoder delay in encoder delay or not result in |
| 182 | incompatibility in gapless playback. You should pick which one will |
| 183 | work for your favorite player. |
| 184 | |
| 185 | However, it's better not to choose SBR at all if you want gapless |
| 186 | playback. LC doesn't have such issues. |
| 187 | |
| 188 | -I, --ignorelength |
| 189 | : Ignore length field of data chunk in input WAV file. |
| 190 | |
| 191 | -S, --silent |
| 192 | : Don't print progress messages. |
| 193 | |
| 194 | --moov-before-mdat |
| 195 | : Place moov box before mdat box in M4A container. This option might |
| 196 | be important for some hardware players, that are known to refuse |
| 197 | moov box placed after mdat box. |
| 198 | |
| 199 | -R, --raw |
| 200 | : Regard input as raw PCM. |
| 201 | |
| 202 | --raw-channels \<n\> |
| 203 | : Specify number of channels of raw input (default: 2) |
| 204 | |
| 205 | --raw-rate \<n\> |
| 206 | : Specify sample rate of raw input (default: 44100) |
| 207 | |
| 208 | --raw-format \<spec\> |
| 209 | : Specify sample format of raw input (default: "S16L"). **Spec** is as |
| 210 | the following (case insensitive): |
| 211 | |
| 212 | 1st char -- type of sample |
| 213 | : **S** (igned) | **U** (nsigned) | **F** (loat) |
| 214 | |
| 215 | 2nd part (in digits) |
| 216 | : bits per channel |
| 217 | |
| 218 | Last char -- endianness (can be omitted) |
| 219 | : **L** (ittle, default) | **B** (ig) |
| 220 | |
| 221 | --title \<string\> |
| 222 | : Set title tag. |
| 223 | |
| 224 | --artist \<string\> |
| 225 | : Set artist tag. |
| 226 | |
| 227 | --album \<string\> |
| 228 | : Set album tag. |
| 229 | |
| 230 | --genre \<string\> |
| 231 | : Set genre tag. |
| 232 | |
| 233 | --date \<string\> |
| 234 | : Set date tag. |
| 235 | |
| 236 | --composer \<string\> |
| 237 | : Set composer tag. |
| 238 | |
| 239 | --grouping \<string\> |
| 240 | : Set grouping tag. |
| 241 | |
| 242 | --comment \<string\> |
| 243 | : Set comment tag. |
| 244 | |
| 245 | --album-artist \<string\> |
| 246 | : Set album artist tag. |
| 247 | |
| 248 | --track \<number[/total]\> |
| 249 | : Set track tag, with or without number of total tracks. |
| 250 | |
| 251 | --disk \<number[/total]\> |
| 252 | : Set disk tag, with or without number of total discs. |
| 253 | |
| 254 | --tempo \<n\> |
| 255 | : Set tempo (BPM) tag. |
| 256 | |
| 257 | --tag \<fcc\>:\<value\> |
| 258 | : Set iTunes predefined tag with explicit fourcc key and value. See |
| 259 | [https://code.google.com/p/mp4v2/wiki/iTunesMetadata](https://code.google.com/p/mp4v2/wiki/iTunesMetadata) |
| 260 | for known predefined keys. You can omit first char of **fcc** when |
| 261 | it is the copyright sign. |
| 262 | |
| 263 | --tag-from-file \<fcc\>:\<filename\> |
| 264 | : Same as --tag, but set content of file as tag value. |
| 265 | |
| 266 | --long-tag \<name\>:\<value\> |
| 267 | : Set arbitrary tag as iTunes custom metadata. Stored in |
| 268 | com.apple.iTunes field. |
| 269 | |
| 270 | --tag-from-json \<filename[?dot\_notation]\> |
| 271 | : Read tags from JSON. By default, tags are assumed to be direct |
| 272 | children of the root object in JSON. Optionally you can specify |
| 273 | arbitrary dot notation to locate the object containing tags. |
| 274 | |
| 275 | |
| 276 | EXAMPLES |
| 277 | ======== |
| 278 | |
| 279 | Encode WAV file into a M4A file. MPEG4 AAC LC, VBR quality 3: |
| 280 | |
| 281 | fdkaac -m3 foo.wav |
| 282 | |
| 283 | Encode WAV file into a M4A file. MPEG4 HE-AAC, bitrate 64kbps: |
| 284 | |
| 285 | fdkaac -p5 -b64 foo.wav |
| 286 | |
| 287 | Piping from **ffmpeg** (you need version supporting CAF output): |
| 288 | |
| 289 | ffmpeg -i foo.flac -f caf - | fdkaac -b128 - -o foo.m4a |
| 290 | |
| 291 | Import tags via json: |
| 292 | |
| 293 | ffprobe -v 0 -of json -show_format foo.flac >foo.json |
| 294 | |
| 295 | flac -dc foo.flac | \ |
| 296 | fdkaac - -ox.m4a -m2 --import-tag-from-json=foo.json?format.tags |
| 297 | |
| 298 | NOTES |
| 299 | ===== |
| 300 | |
| 301 | Upto 32bit integer or 64bit floating point format is supported as input. |
| 302 | However, FDK library is implemented based on fixed point math and only |
| 303 | supports 16bit integer PCM. Therefore, be wary of clipping. You might |
| 304 | want to dither/noise shape beforehand when your input has higher |
| 305 | resolution. |
| 306 | |
| 307 | Following channel layouts are supported by the encoder. |
| 308 | |
| 309 | 1ch |
| 310 | : C |
| 311 | |
| 312 | 2ch |
| 313 | : L R |
| 314 | |
| 315 | 3ch |
| 316 | : C L R |
| 317 | |
| 318 | 4ch |
| 319 | : C L R Cs |
| 320 | |
| 321 | 5ch |
| 322 | : C L R Ls Rs |
| 323 | |
| 324 | 5.1ch |
| 325 | : C L R Ls Rs LFE |
| 326 | |
| 327 | 7.1ch (front) |
| 328 | : C Lc Rc L R Ls Rs LFE |
| 329 | |
| 330 | 7.1ch (rear) |
| 331 | : C L R Ls Rs Rls Rrs LFE |
| 332 | |