tag mapping: add recorded date and tempo, remove performer->artist
[fdkaac.git] / README
CommitLineData
48e2f01c 1==========================================================================
2fdkaac - command line frontend encoder for libfdk-aac
3==========================================================================
4
5Prerequisites
6-------------
e9014663 7You need libfdk-aac.
8On Posix environment, you will also need GNU gettext (for iconv.m4) and
9GNU autoconf/automake.
10
11How to build on Posix environment
12---------------------------------
13First, you need to build libfdk-aac and install on your system.
14Once you have done it, the following will do the task.
15(MinGW build can be done the same way, and doesn't require gettext/iconv)
48e2f01c 16
48e2f01c 17$ autoreconf -i
e9014663 18$ ./configure && make && make install
19
20How to build on MSVC
21--------------------
22First you have to extract libfdk-aac source here, so that directory tree will
23look like the following:
24+- fdk-aac ---+-documentation
25| +-libAACdec
26| +-libAACenc
27| :
28+- m4
29+- missings
30+- MSVC
31+- src
32
33MSVC solution for Visual Studio 2010 is under MSVC directory.
a56831da 34
afe73f49 35Available input format
36----------------------
6a3b77de 37WAV, RF64, CAF, RAW, upto 32bit int / 64bit float format is supported.
38Metadata in CAF info chunk can be read and copied to the resulting m4a.
39This is especially useful and works well when you pipe from ffmpeg via CAF.
40For example, you can copy tag from original "foo.flac" to "foo.m4a"
41through the following pipeline:
42
43$ ffmpeg -i foo.flac -f caf - | fdkaac -m3 - -o foo.m4a
44
45Since FDK AAC encoder is implemented based on fixed point integer,
46encoder itself handles 16bit input only.
afe73f49 47Therefore, when feeding non-integer input, be careful so that input doesn't
48exceed 0dBFS to avoid hard clips.
49You might also want to apply dither/noise shape beforehand when your input
50has higher resolution.
51
52Note that fdkaac doesn't automatically resample for you
53when input samplerate is not supported by AAC spec.
54
a56831da 55Tagging Options
56---------------
57Generic tagging options like --tag, --tag-from-file, --long-tag allows you
58to set arbitrary tags.
59Available tags and their fcc (four char code) for --tag and --tag-from-file
60can be found at http://code.google.com/p/mp4v2/wiki/iTunesMetadata
61
62For tags such as Artist where first char of fcc is copyright sign,
63you can skip first char and just say like --tag="ART:Foo Bar" or
64--tag-from-file=lyr:/path/to/your/lyrics.txt
adbd1aac 65
66Currently, --tag-from-file just stores file contents into m4a without any
67character encoding / line terminater conversion.
68Therefore, only use UTF-8 (without BOM) when setting text tags by this option.
69
70On the other hand, --tag / --long-tag (and other command line arguments) are
71converted from locale character encoding to UTF-8 on Posix environment.
72On Windows, command line arguments are always treated as Unicode.
cbb23cdb 73
74Tagging using JSON
75------------------
76With --tag-from-json, fdkaac can read JSON file and set tags from it.
77By default, tags are assumed to be in the root object(dictionary) like this:
78
79{
80 "title": "No Expectations",
81 "artist": "The Rolling Stones",
82 "album": "Beggars Banquet",
83 "track": 2
84}
85
86In this case, you can simply specify the filename like:
87--tag-from-json=/path/to/json
88
89If the object containing tags is placed somewhere else, you can optionally
90specify the path of the object with dotted notation.
91
92{
93 "format" : {
94 "filename" : "Middle Curse.flac",
95 "nb_streams" : 1,
96 "format_name" : "flac",
97 "format_long_name" : "raw FLAC",
98 "start_time" : "N/A",
99 "duration" : "216.146667",
100 "size" : "11851007.000000",
101 "bit_rate" : "438628.000000",
102 "tags" : {
103 "ALBUM" : "Scary World Theory",
104 "ARTIST" : "Lali Puna",
105 "DATE" : "2001",
106 "DISCID" : "9208CC0A",
107 "TITLE" : "Middle Curse",
108 "TRACKTOTAL" : "10",
109 "track" : "2"
110 }
111 }
112}
113
114In this example, tags are placed under the object "format.tags".
115("format" is a child of the root, and "tags" is a child of the "format").
116In this case, you can say:
117--tag-from-json=/path/to/json?format.tags
118
119For your information, ffprobe of ffmpeg project (or avprobe of libav) can
120output media information/metadata in json format like this.
121
122Note that not all tags can be read/written this way.
This page took 0.016153 seconds and 4 git commands to generate.