This sections gives information about media item and metadata management.
MediaPortal 2 provides a very flexible media library that contains all information about media items. A media item can be any kind of image, audio or video file, or even a streaming source.
The metadata for the media items are structured in so called "aspects". The default aspects are:
For the full list and source code check https://github.com/MediaPortal/Media...ultItemAspects.
Aspects can contain inline attributes and many-to-one, one-to-many and many-to-many relations (i.e. artists). There are default aspects which are provided by the base MP2 system, more aspects can be provided by plugins. Each "aspect" is internally stored in a database table. When new aspects are created and registered, the media library automatically creates tables for them.
When resources are imported, the traversal through the resource tree is executed by the generic importer. To extract metadata from media items, the importer involves so called "Metadata extractors" which can be dynamically added by plugins. Metadata extractors are used to indentifiy media items and read information from them (i.e. MP3 tags, video and audio stream information, image EXIF data...) and are called when you navigate through "Local media navigation" (when not attached to MP2 server) or when a share gets imported into the media library (attached to server).
Metadata extraction can be an expensive task (as related to runtime and I/O operations), so we provide two different operation modes for metadata extractors:
For example, the thumbnail extraction is only done in "extended mode", while in "fast mode" only existing thumbnail from the windows explorer cache.
Skins can register any additional aspect to be loaded when you are browsing the media library. This means if you implement more aspects and want to show their information inside a skin screen, you simply need to tell the media plugin to query the information from the media library and provide it to the skin. You can define the required metadata on a per-aspecttype-basis:
For instance refer to the default skin's plugin.xml https://github.com/MediaPortal/Media...ase/plugin.xml:
<!-- Registrations for MIA types which need to be loaded by the Media navigation model for this skin -->
The registration can be done separately for each media navigation part (Audio, Images, Videos, BrowseLocalMedia, BrowseMediaLibrary) and for each skin/theme.
If for example a new skin "MySkin" should show data from an additional aspect in its theme "Theme1", it can register that like this:
Those registrations are inherited through the skin resource lookup chain, so if you inherit from another skin or theme, you also inherit those registrations.