tagparser/README.md

64 lines
2.9 KiB
Markdown
Raw Normal View History

2015-08-16 23:39:42 +02:00
# Tag Parser
2016-05-16 20:56:53 +02:00
C++ library for reading and writing MP4 (iTunes), ID3, Vorbis, Opus, FLAC and Matroska tags.
2015-05-19 22:53:17 +02:00
2015-06-08 22:04:24 +02:00
## Supported formats
The tag library can read and write the following tag formats:
2016-05-16 20:56:53 +02:00
- iTunes-style MP4/M4A tags (MP4-DASH is supported)
2015-06-08 22:04:24 +02:00
- ID3v1 and ID3v2 tags
2016-05-16 20:56:53 +02:00
- conversion between ID3v1 and different versions of ID3v2 is possible
2016-05-14 00:24:01 +02:00
- Vorbis, Opus and FLAC comments in Ogg streams
- cover art via "METADATA_BLOCK_PICTURE" is supported
2016-05-16 20:56:53 +02:00
- Vorbis comments and "METADATA_BLOCK_PICTURE" in raw FLAC streams
2015-06-08 22:04:24 +02:00
- Matroska/WebM tags and attachments
## File layout options
### Tag position
The library allows you to choose whether tags should be placed at the beginning or at
the end of an MP4/Matroska file.
### Padding
Padding allows adding additional tag information without rewriting the entire file
or appending the tag. Usage of padding can be configured:
- minimum/maximum padding: The file is rewritten if the padding would fall below/exceed the specifed limits.
- preferred padding: If the file needs to be rewritten the preferred padding is used.
Default value for minimum and maximum padding is zero. Hence the library will almost always have to rewrite
the entire file to apply changes. To prevent this, set at least the maximum padding to a higher value.
It is also possible to force rewriting the entire file always.
2016-09-10 17:17:32 +02:00
Taking advantage of padding is currently not supported when dealing with Ogg streams (it is supported when dealing with raw FLAC streams).
2016-01-17 21:38:27 +01:00
## Additional features
2015-08-16 23:36:49 +02:00
The library can also display technical information such as the ID, format, language, bitrate,
duration, size, timestamps, sampling frequency, FPS and other information of the tracks.
2015-06-08 22:04:24 +02:00
It also allows to inspect and validate the element structure of MP4 and Matroska files.
2015-12-27 18:06:01 +01:00
## Text encoding, Unicode support
2016-08-04 00:16:19 +02:00
The library is aware of different text encodings and can convert between different encodings using iconv.
2015-12-27 18:06:01 +01:00
### Windows specific
A workaround to support filenames containing non-ASCII characters (despite the lack of an UTF-8
supporting `std::fstream` under Windows) can be enabled by adding `-DUSE_NATIVE_FILE_BUFFER=ON`
to the CMake arguments **when building `c++utilities`**. It is *not* sufficient to specify this
option only when building `tagparser`.
## Usage
2016-08-04 00:16:19 +02:00
For examples check out the command line interface of [Tag Editor](https://github.com/Martchus/tageditor).
2016-09-14 20:02:08 +02:00
API documentation can be generated using Doxygen with `make tagparser_apidoc`.
2015-06-08 22:04:24 +02:00
2015-12-27 18:06:01 +01:00
## Bugs, stability
It is recommend to create backups before editing because I can not test whether the library
works with all kinds of files (when forcing rewrite a backup is always created).
2015-12-27 18:06:01 +01:00
2015-05-19 22:53:17 +02:00
## Build instructions
2017-05-06 08:59:57 +02:00
The tagparser library depends on [c++utilities](https://github.com/Martchus/cpp-utilities) and is built
in the same way.
2017-04-15 23:21:16 +02:00
It also depends on zlib. For checking integrity of testfiles, the OpenSSL crypto
library is required.
2015-08-16 23:39:42 +02:00
## TODO
2016-09-10 17:17:32 +02:00
- Support more formats (EXIF, PDF metadata, Theora, ...)
2016-09-14 20:02:08 +02:00
- Support adding cue-sheet to FLAC files