Hi all & happy new year,
This is not release-ready yet but decided to get some feedback, since this seems to be a very common request. I'm not too familiar with publishing stuff here, but if interest is there I can release a bundled script package with buttons, images, scripts, etc.
Over Xmas I've been experimenting with MediaInfo, Icaros, codec packs, Windows 10 native support and whatnot. There are a couple of file containers and codecs which DOpus does not natively or fully support yet, but since it does most of what I want already, I decided to help it a little bit with some custom columns and commands. Icaros exposes too little info for my taste, after getting used to Foobar2000, MP3Tag, etc. I expect no less than two billion fields to tap into. I used ffmpeg's ffprobe for another project which is also very powerful but MediaInfo is more user-friendly imo.
I've experimented a lot with the DOpus extended attributes "comments, tags/keywords, user descriptions" and none of them was suitable because I don't like the fact that DOpus stores whatever it can file-specific fields in the files if it can handle the format and the rest in ADS streams if it can't. I'd prefer them since it's integrated into Metadata pane but the inconsistency, i.e. "sometimes in-file, sometimes ADS" breaks my OCD. And I'm quite frustrated how DOpus conflates "comments" with "user descriptions" and breaks TCC/4NT compatibility if ADS is used. Then there are stupid old formats like AVI which can store keywords only up to 400 chars! Believe me there are good reasons why I don't use tags or comments. But to my surprise, FSUtil can handle arbitrary ADS streams quite well, as simple as "filename:streamname"! So here's how the script works:
Call MediaInfo for each selected file, get a JSON output in a temp file, parse and store a subset of the output in an ADS attached to every file. It obviously works only on NTFS, and as long as you activate the setting "Copy all NTFS streams" they stay put.
Here's what I've come up so far:
You get yellow-marked columns & 5 commands (temp. added as buttons here). You might want to study the output a bit and compare what DOpus can show on the right vs on the left, but the markings mean the following:
- The files which do and don't have metadata extensions (ME) can show the value "yes" & "no" respectively. This column is always calculated separately without going into the rest of the multicol-method. If it's yes, there's the custom ADS attached to it.
- Files which have been modified after the ME has been saved can be marked as dirty.
- Some exotic files, such as raw AAC/AC3/DTS cannot be processed by MediaInfo either. These are normally embedded in video files and seldomly found on their own. Flac, MP3, Opus, Mka, M4a, etc. are tested fine.
- If the format supports ReplayGain and the file has the info, you can show it.
- Multi-channel information can be shown; there's also multi-track column to show if the file has multiple tracks, e.g. for different languages, director's comments, etc.
- The exotic files from 2 are recognized correctly.
- Incorrect values shown by DOpus are shown properly on the left.
- Display Aspect Ratio can be also shown. This is not the same as Width:Height ratio. Matroska/Mkv for example can force the player to play a 640x640 video as 640x480 and displayAR would be 1.333.
Speed: It's not a native solution, so don't expect nowhere near the same speed as DOpus shows its native columns, but with an SSD/NVME the speed is acceptable to me. I'm experimenting with caching to speed it up but correctness precedes speed at the moment.
Install: Drop/import the .JS script into your user scripts. Drop the buttons into a toolbar/menu of your choice. After that, select a bunch of video/audio files and run "Updata Metadata". To update, you don't have to delete old info first, just Update again. The file contents are not changed at all, only the data streams attached to them, but I take no responsibility and suggest you copy a few files to a temp directory and experiment with it before you do massive changes.
You also need the CLI version of MediaInfo and only the exe file. Not sure if GUI has the CLI exe bundled.
But beware: This is not a drag-and-drop script addin and there's a couple of things to adjust in the script such as MediaInfo path, ADS stream name, etc. without a prefs gui (not my top priority atm) But It requires only no or basic development skills and the places to adjust are marked clearly, look for "ADJUST AS YOU SEE FIT" in the JS code.
Debugging/Feedback: You might want to open the Output Window, switch to Other Logs view. There might be a couple errors, if the columns work ignore them If after a refresh you still don't see the correct results try "Dump MediaInfo" or "Copy MediaInfo" commands and check if MediaInfo can parse the field you want. If it's there check with "Copy Metadata" if it's been parsed and cached as well.
During my experiments I often experienced that if MediaInfo supports a format very well, like mp4, mkv, mka, m4a, etc. but does not show an expected value, e.g. bitrate, VBR/CBR mode, etc. it is often due to older muxers. Try remuxing the file using AviDemux, MKVToolNix, FFMpeg (do not recompress, just copy the streams) and/or optimizing/rebuilding the files with Foobar2000, MP3Tag, etc. Portable versions of these programs do just as fine. This usually fixes the problem and/or fills in missing fields. If you run "Update" again, it might or might not be fixed. Good luck!
AviDemux Portable
Foobar2000
[EDIT]
At the moment, lister columns may not be refreshed automatically during an update but I hacked a quick solution to refresh & reselect the files after an update. It works but misses some files in flat folder view.
Pretty sure DOpus gurus know this but I didn't until recently: You can use the script columns also in InfoTips & Tile View (my newest favorite now!). There's also an additional ME Formatted "column" which is best suitable for infotips and shows raw data stored in ADS. Ignore AvgKB & KB per Area fields; they're not ported to this script yet.
Buttons & Script (v0.9):
CuMediaExtenders.osp (2.5 MB)
[EDIT]:
v0.51: Added progress windows with patient help from @Leo.
v0.52: Auto-refresh added.
... many unreleased versions later..
v0.9: Far too many options and features than I had planned. GitHub page: GitHub - cy-gh/DOpus_CuMediaExtenders: Video & audio extended script fields & columns for Directory Opus file manager, with MediaInfo & NTFS ADS backend