So I’ve been annoyed for a while that Plex (Emby, Jellyfin., et al) do not support BluRay ISOs.
While it makes sense that they can’t support menus (that doesn’t make sense in the context of them), it doesn’t make sense that they can’t support exporting individual playlists.
To prove how easy it is to do this, I’ve spent 2 weekends implementing 2 POCs that will enable you to to use them with these media servers without any changes to the media server themselves.
the first POC was a streaming http server. The http server took a url that included the file (iso image on server) and playlist # (i.e. mpls file) and would stream the m2ts stream to whomever asked for it. This worked perfectly with Emby as emby supports STRM files. Plex does not.
the second POC builds off the first, but instead of streaming over an http server, it provides a fuse file system that translates bluray playlists into m2ts file that can be played normally. This should (fingers crossed, tested in VLC) work fine with Plex.
Basically it expects a traditional file system with iso files in directories. To export a playlist as an m2ts file you create a small yaml file in the same directory as the iso that defines which iso and playlist should that m2ts file represent (conceptually possible to place this “m2ts” file in other directories, but not tested: i.e. if wanted Extras in a differnt dir)
example file: Rogue One (2016).m2ts
contents
file: Rogue One (2016).iso
playlist: 800
when viewed through the fuse file system, the file Rogue One (2016).m2ts will have the contents of playlist 800 of Rogue One (2016).iso
Implementing the fuse file system. took me about 2-4 hours (mostly learning fuse concepts). Implementing the plain bluray playlist reader took 2-4 hours. Hacking up the bluray reader to inject the language codes for the tracks from the bluray clipinfo data took a day or 2 (not really neccessary, but provides a better experience).
code is here: https://github.com/sjpotter/bluray-http-server/
fs as described above is in the bazil-fuse branch. needs go and libbluray to build.
can see more writeup here https://emby.media/community/index.php?/topic/85106-bluray-playlist-support-ive-written/
now you might ask: why? there are 3 primary reasons.
-
original ISO is bug free format. All the MKV creators have had bugs (heck, MakeMKV just finally fixed an Atmos audio bug), so who wants to rip and rerip
-
I have lots of images of burays accumulated over the year, I don’t want to spend time turning them into MKV
-
most importantly. MKV is a terrible format for ISOs that have seamless branching content. if you have a movie with 3 cuts that relies on seamless branching, storing all 3 cuts as MKVs requires 3x the space. Storing them as ISOs with my method, does not.
#3 is why this should be supported natively, as its not, I built it myself
