Show all video metadata in lister columns

DOpus doesn't show complete metadata information for video files (e.g. mkv x264/x265 with AAC audio), e.g. I'm missing video/audio codec info as well as audio channel info. Searching through the forum I've found a few links with the similar issue (here, here and here) but none of them offered any resolution. The first one is particularly interesting as it mentions MediaInfo, which would be really ideal since it does recognize all the metadata of the modern formats/codecs and is available as a library.

Is mediaInfo a tool you can pass a file to that will return a bunch of metadata?
If so you could create a custom column script that could do this for you. A good example that does the same thing for EXIF is here Columns: Extended EXIF (Picasa faces e.g.).

I found it easier to write a script to remux mkv to mp4 using FFmpeg than to bother with custom columns for mkv. Opus' support for mp4 metadata is decent. You should try it, unless you must use the mkv format.

FFmpeg's ffprobe is also an alternative to MediaInfo if you insist on the custom column route. Some regex should do the job of plugging the data to where it is needed.

Sorry, wasting hours and hours to remux the whole libary now and in the future to an old format isn't an exciting prospect
Thanks for the ffprobe suggestion, it's also a great utility, just wish DOpus used one of those highly functional utils to get media information

Yes, it is exactly that tool, offering GUI, command line and library support. Thanks for the suggestion, will check that EXIF column out. Do you know of any example that uses a library rather than exe (to avoid spawning a shell process for every file)
By the way, is the code data for default Opus columns accessible? It's very hard to write a new script from scratch, but maybe tweaking the current video info columns could be easier.

The code to the AudioTags plugin, which populates similar fields for a bunch of audio formats, is here:

For video files, the main difference would be that a plugin could fill out the DVPFileInfoMovie structure instead of the similar audio structure.

But if you think adding a column via scripting is difficult then you'll find dealing with the C++ code that Opus and the plugins use internally a lot more difficult than that.

Yeah, custom C++ plugin is a non-starter for me.
Re. complexity of scripting columns – for some of the standard columns all I want to change is the column title (e.g. "# of Fd" instead of the long "Folders (total)", where column name is always wider than column data, taking precious space (I've limited the width, but the "..." in the name isn't pretty either)), or sometimes just the wording of some values, or a few tweaks here and there.
That's orders of magnitude easier than having to write the full script for the underlying functionality. And some of these tweaks are just constant/formatting thigs that I could tweak even in C++ :slight_smile:
Hence having access to default column code would be of much value

Less value than you might assume, even if you did have that code its part of the DOpus core exe so you can't compile it without the rest of the code.

The script will not be complex to create, and we have the EXIF sample does the same thing but using a different exe. All we need to do is manage the command line params, and split out the response. This seems like a good starting point mediainfo.

I would not worry about speed until we have given it a try. I don't know how mediainfo works. But I suspect the speed will be mostly limited to how and where the metadata is stored in the media file. If mediainfo needs to read the whole video file to get the metadata, that will bottle neck.

If you want assistance or get stuck with the script, I (and many others here) will assist.

Isn't the other way around? Don't you have to convert to MKV from MP4? MP4 seems to be the de facto standard for video these days, at least on the mainstream, don't know about the dark corners.

I finally decided to tackle this. I am using FFprobe.

Now I have 188 additional columns (divided roughly equally for audio, video, container and subtitle), albeit many I won't ever use.

Still considering if it would be better with multicol enabled (currently using a global variable as cache) and thinking about how to post-process some of the raw values to display them in a more relevant manner.

I changed the cache to use Script.Vars and check for staleness by using the modified date of the item.

Testing with 2500+ items, it can take some time to gather the data (10-20 minutes), but once it is in the cache, getting the value of other columns is no issue.

For a small number of items, the initial build up is relatively fast.

Now trying to make the cache persist.

I think it is done. It won't handle multiple streams of the same type (e.g. movie with multiple audio tracks in different languages), only the first, but most of my files don't have multiple streams, so I won't miss that.

I am using it do add info to the tiles mode and to the info tip:

Could you explain how ffprobe works to add columns and share your tooltip code ?