Originally Posted by
Paul
Mezzmo will try to retrieve the date from several sources (in this order):
- From metadata contained within your video files
- From external metadata files (.NFO, .XML, .TGMD, etc.)
- From online sites such as IMDB.com and TheTVDB.com
- From the video file's date on disk
Can you show me an example of setting any metadata in an avi or mp4 file, or any tag in an XBMC-format nfo file, that will set the Created field to anything other than January 1st of some year (the one that is simultaneously set in the Year field)? I really have tried; I can’t find it.
I did eventually determine that it is specifically the NTFS Modified timestamp (not the Created timestamp) that initially sets both the Created and Modified fields (if nothing else overrides the Created field). If the NTFS Modified timestamp later changes, the Modified field reflects the new value, but the Created field remains as it was.
If an NTFS timestamp field specifies a date before January 1st, 1980, Mezzmo will often display “Invalid DateTime” and refuse to use the value... but not always. Occasionally it accepts one—I haven’t been able to discern any pattern to it. That makes using the NTFS timestamp impractical as a general way to fill in the Created field, since it can’t reliably be used to indicate the premiere or original air date of anything older than 1980; and I can’t find any metadata tag or XBMC.nfo tag that will set it (except to 1/1/yyyy) either.
Why am I so obsessed with the Created field? The main reason is that the PS3 (to which I’m streaming) only shows four things: the title, the thumbnail, the running time and a date in month/day/year format. The premiere date / original air date is the logical thing to put there. Since Mezzmo sends the Created date as whatever DLNA field it is that the PS3 deigns to display, I’d like to get the Created field to reflect that.
Testing with AVI and MP4 files, Mezzmo, ffmpeg and AtomicParsley, I worked out these tag mappings. I think I’m going to have to leave making a more comprehensive chart—including other file types, XMBC.nfo tags and online data base fields—to someone who has access to the Mezzmo source code. It would be a useful bit of documentation, but doing it from the “black box” perspective is just too time-consuming (and probably not entirely accurate).
Code:
Mezzmo (3.1) ffmpeg/ffprobe AtomicParsley .avi .mp4
Used verbatim:
Album Artist album_artist albumArtist - aART
Artist artist artist IART cART
Creator composer composer - cwrt
Episode track tracknum IPRT trkn
Genre genre genre IGNR cgen
Season disc¹ disk - disk
Series album album IPRD calb
Title title title INAM cnam
Unused:
grouping grouping cgrp
network TVNetwork tvnn
show TVShowName tvsh
episode_id TVEpisode tven
season_number TVSeasonNum tvsn
episode_sort TVEpisodeNum tves
Processed:
comment comment ICMT ccmt
date year ICRD cday
description description - desc
Comment (.avi): Uses "ICMT"
Comment (.mp4): Uses "desc" if present, else "ccmt"
Created (.avi): If there is no year in the filename,
uses the NTFS Modified (not Created!) timestamp.
If no "ICRD" tag and there is a year in the filename,
uses midnight January 1st of that year.
If "ICRD" tag is present and there is a year in the filename,
uses midnight January 1st of year from "ICRD" tag.
Created (.mp4): If no "cday" tag and no year in the filename,
uses the NTFS Modified (not Created!) timestamp.
If no "cday" tag and there is a year in the filename,
uses midnight January 1st of that year.
If "cday" tag is present,
uses midnight January 1st of year from "cday" tag.
Year: If "ICRD" (avi) or "cday" (mp4) tag is present,
uses the year from the date in that tag.
If no "ICRD" (avi) or "cday" (mp4) tag is present,
uses year from filename if one is present.
If neither tag nor year in filename is present,
uses year from NTFS Modified timestamp.
¹ ffprobe reads the "disk" tag in .mp4 as "disc", but ffmpeg
does not write it using either "disc" or "disk";
presumably this is a bug in ffmpeg (using
<http://ffmpeg.zeranoe.com/builds/win64/static/ffmpeg-1.1.3-win64-static.7z>)
Bookmarks