zambelli
3rd January 2022, 10:54
Is there a tool (command line, preferably) that can copy all iTunes-style tags from one MP4 file to another MP4 file without skipping unknown tags?
Every tool I've tried so far either requires unknown tags to be explicitly defined ahead of time (which isn't feasible in batch processing) or fails to copy tags it doesn't recognize.
The unknown tags in this case are actually tags inserted by Foobar2000, stuff like DISCOGS_RELEASE_ID, replaygain_album_gain, etc. so not actually particularly obscure.
Here are some methods I've tried so far, all without success:
FFmpeg with -map_metadata
MP4box with -itags
MP4box with -udta (after -udta-dump)
ExifTool with -tagsfromfile and -iTunes:all
Here is an example of some iTunes tags (XML dump courtesy of mp4box -disox) that have been problematic:
<iTunesSpecificBox Size="93" Type="----" Specification="apple" Container="ilst data" >
<iTunesMean Size="28" Type="mean" Specification="unknown" Container="unknown" value="com.apple.iTunes">
</iTunesMean>
<iTunesName Size="33" Type="name" Specification="unknown" Container="unknown" value="replaygain_album_gain">
</iTunesName>
<data Size="24" Type="data" Version="0" Flags="1" Specification="apple" Container="ilst *" >
</data>
</iTunesSpecificBox>
<iTunesSpecificBox Size="81" Type="----" Specification="apple" Container="ilst data" >
<iTunesMean Size="28" Type="mean" Specification="unknown" Container="unknown" value="com.apple.iTunes">
</iTunesMean>
<iTunesName Size="21" Type="name" Specification="unknown" Container="unknown" value="PUBLISHER">
</iTunesName>
<data Size="24" Type="data" Version="0" Flags="1" Specification="apple" Container="ilst *" >
</data>
</iTunesSpecificBox>
<iTunesSpecificBox Size="84" Type="----" Specification="apple" Container="ilst data" >
<iTunesMean Size="28" Type="mean" Specification="unknown" Container="unknown" value="com.apple.iTunes">
</iTunesMean>
<iTunesName Size="28" Type="name" Specification="unknown" Container="unknown" value="DISCOGS_RELEASED">
</iTunesName>
<data Size="20" Type="data" Version="0" Flags="1" Specification="apple" Container="ilst *" >
</data>
</iTunesSpecificBox>
Every tool I've tried so far either requires unknown tags to be explicitly defined ahead of time (which isn't feasible in batch processing) or fails to copy tags it doesn't recognize.
The unknown tags in this case are actually tags inserted by Foobar2000, stuff like DISCOGS_RELEASE_ID, replaygain_album_gain, etc. so not actually particularly obscure.
Here are some methods I've tried so far, all without success:
FFmpeg with -map_metadata
MP4box with -itags
MP4box with -udta (after -udta-dump)
ExifTool with -tagsfromfile and -iTunes:all
Here is an example of some iTunes tags (XML dump courtesy of mp4box -disox) that have been problematic:
<iTunesSpecificBox Size="93" Type="----" Specification="apple" Container="ilst data" >
<iTunesMean Size="28" Type="mean" Specification="unknown" Container="unknown" value="com.apple.iTunes">
</iTunesMean>
<iTunesName Size="33" Type="name" Specification="unknown" Container="unknown" value="replaygain_album_gain">
</iTunesName>
<data Size="24" Type="data" Version="0" Flags="1" Specification="apple" Container="ilst *" >
</data>
</iTunesSpecificBox>
<iTunesSpecificBox Size="81" Type="----" Specification="apple" Container="ilst data" >
<iTunesMean Size="28" Type="mean" Specification="unknown" Container="unknown" value="com.apple.iTunes">
</iTunesMean>
<iTunesName Size="21" Type="name" Specification="unknown" Container="unknown" value="PUBLISHER">
</iTunesName>
<data Size="24" Type="data" Version="0" Flags="1" Specification="apple" Container="ilst *" >
</data>
</iTunesSpecificBox>
<iTunesSpecificBox Size="84" Type="----" Specification="apple" Container="ilst data" >
<iTunesMean Size="28" Type="mean" Specification="unknown" Container="unknown" value="com.apple.iTunes">
</iTunesMean>
<iTunesName Size="28" Type="name" Specification="unknown" Container="unknown" value="DISCOGS_RELEASED">
</iTunesName>
<data Size="20" Type="data" Version="0" Flags="1" Specification="apple" Container="ilst *" >
</data>
</iTunesSpecificBox>