The Holy Trinity of Matroska (.mkv) Filter Packages for Windows 7

Now that 7 has been released, goofy codec packs are no longer needed, except for special circumstances. The “Holy Trinity” of MKV filter packages is:

Some Matroska files do use additional codecs, usually for commentary audio tracks, so you might also want to pick up FFDShow-tryouts. When installing FFDShow, deselect everything except for the additional codecs you need, generally this will be “Vorbis” and “Theora”.

Registering VSFilter.dll is a bit of a pain since there’s no installer. First extract VSFilter.dll to your favorite codecs folder. I generally use “C:\Codecs”. Next, load an Administrative command prompt by typing “cmd” into the search area, right clicking on “cmd.exe” (which will be a returned result from the search) and selecting “Run as administrator”. Then at the c: prompt, type “cd c:\codecs” or “cd ” followed by whatever folder you store your codes in. Finally, at the c: prompt again, type “regsvr32 VSfilter.dll”. If everything went right, you should get a dialog box that says the filter was registered successfully. Now when you load up your favorite Matroska file, enjoy subtitles! Note that you can change subtitle tracks and audio/video tracks by right clicking on the Matroska icon in the System Tray.

Update: x64 users will need a 64-bit version of VSFilter. I haven’t tested this build but Shark007 seems to know what he’s doing so hopefully it will work for you. (Confirmed to be working by Jere_Jones.)

On the Path to the Ultimate Media Center Media Library (Part 1)

Introduction

For the past few months, I’ve been working on and off with the Media Browser team to help create the ultimate media library solution for Media Center. I’ve come to realize that Media Browser’s folder based system has some major drawbacks and I’ve been unable to convince the team to switch to a better storage system. So I’ve decided to completely rethink the idea of a “Media Library” and build my own solution.

The Problem

The real problem is that there isn’t a standard movie file format or television file format. Most, if not all, of the Media Center plugins, and the Windows 7 Movie Library, require each movie to be in its own folder. Additional files such as backgrounds or cover art are also generally placed in these folders. Metadata for movies is provided by the de facto standard “My Movies” XML file, a “dvdinfo.xml” file or an entry in a database. Metadata for television episodes isn’t standardized and varies from application to application.

Forcing each movie or television show season to be in a folder adds an extra level of complexity to library management. No other type of digital entity (photos, documents, etc) requires a unique folder. Even an entire music collection could exist in a single folder, the embedded metadata dictates how the player application will organize for presentation to the user.

All modern video containers support metadata, however the level of metadata support varies:

  • AVI supports almost no useful metadata.
  • WMV supports more metadata but not quite enough.
  • DVR-MS/WTV support fairly extensive metadata but is missing a few critical items like “Season Number”. (It may be possible to add additional custom metadata to this container. Must investigate further.)
  • MP4 supports a weird collection of metadata, seems to have an emphasis on music, does support “Season Number” and “Episode Number” but is missing stuff like “Directors”, “Actors”, “Crew”, etc.
  • MKV supports almost no default metadata but has an extensible tag based system that can be customized on a per-file basis. Also supports Chapters.

The Matroska Hydra

Of all the relevant container formats, Matroska seems to be the most popular and already supports embedded metadata via “tags”. Matroska also has the advantage of supporting “attachments”. Currently these attachments are mostly used for subtitle fonts but there’s nothing stopping us from using them for cover art or background images.

However, Matroska isn’t perfect as there still isn’t full support in Windows. The filters/splitters that are available only implement the minimal features to make the files playable.

Currently missing from Haali’s implementation:

  • Fast forward and rewind
  • Subtitles require VSFilter
  • Subtitles disable DXVA
  • Subtitles, audio tracks and chapters aren’t switchable from Media Center
  • x64 version not officially supported / hard to find
  • Property Handler for Windows Explorer / Desktop Search

Currently missing from DivX Lab’s implementation:

  • Chapter switching
  • Subtitles
  • Audio track switching
  • Property Handler doesn’t fetch metadata, only runtime

I have not tested Gabest’s splitter but I’m going to assume it has fewer features than either Haali or DivX Labs as it is much older and I believe it to be no longer being developed.

The Long Road Ahead

Before we can even begin to embrace Matroska as the ultimate container format for movies and television, we need to implement some lower level services.

  • IFilter so Windows Desktop Search can index metadata
  • Property Handlers so Windows Explorer can display properties (and maybe edit)
  • Libraries to obtain and add metadata to existing Matrosta files
  • Libraries to remux other containers into Matroska files

After creating these base items, we can do some really cool stuff like create a “Movie Library” using Windows 7’s Libraries feature. This would allow searching for more than just filenames from Windows Desktop Search. For example, I could search for “Bruce Campbell” and get a list of all movies I have starring Bruce. Property Handlers should also allow us to extract attachments from a Matroska file allowing us to use cover art as icons instead of thumbnails generated from a frame of the movie. The Media Center plugin would no longer need a database since Windows Desktop Search effectively becomes the database.

Conclusion

The remaining blog posts in this series will chronicle the research and development I’m doing while creating this “Ultimate Media Library”. The pace of the work I’ve done up to this point has been very slow so I would expect the frequency of posts in this series to be anything but frequent. I plan for the entire project to be open source however there’s nothing worth posting yet. If anyone has any ideas or would like to get involved, feel free to get in touch with me on Twitter or via this site or whatever.

Fun With ToDVRMS v1.0.1.0

I managed to get a hold of the “Early Access” version of Andy’s ToDVRMS tool specifically to test out the WTV file creation features. So far, every h264 encoded Matroska file I’ve tried converted to WTV and played back properly in Media Center.

There are a few issues however:

  • ToDVRMS doesn’t support much metadata embedding and the few commands I tried didn’t work (-title, –year) with the exception of –m which flags the file as a “IsMovie” (this means the file will show up in the Media Center Movie Library).
  • There’s no direct path for converting scene subtitles (SRT, SSA, ASS, etc.) to “line 21”. Line 21 is apparently the only subtitle system supported by WTV and even though I was able to find tools to convert SRT files to SCC and then from SCC to “raw” (supposedly the format “line 21” uses), ToDVRMS doesn’t have an option to use subtitle files from any source other than a stream in the original MKV file. MKV only supports a handful of subtitle formats and “raw” wasn’t one of them so I was unable to get any subtitles working.
  • “Forced subtitles” are going to be an issue. Unless there’s something to “force” a subtitle track to play by default (like Matroska has), the only solution for forced subtitles will be to transcode the file with the subtitles “burned” into the stream.
  • DTS doesn’t work at all. ToDVRMS crashes when trying to convert a file with DTS audio. This was expected as I don’t believe WTV supports DTS anyway.
  • I’m assuming MKV “chapters” won’t work but I didn’t test this as there are no command line options to enable chaptering and WTV probably doesn’t support chapters anyway.

Things that did work:

  • Multiple audio tracks. I have a copy of Akira with the original Japanese track and a dubbed English track. I was able to switch tracks using the “i” button on the remote and sliding over to the “language” area.
  • No transcoding was required. The WTV container supports h264 streams.
  • Fast forward and rewind on the remote work as expected when playing from Media Center. The fast forward and rewinds buttons didn’t work in Media Player, but we don’t really care about Media Player, do we?

I have no idea if these will play on Extenders as I don’t have one to test with (no 360 either) but, based on what I’ve read, they should play fine on any Extenders that support h264.