Hi All,
Not sure if this is the right location for this post, but I've been searching for weeks for how to get the u-control features of my BTTF 25th Anniversary Blu Rays into my plex library, and have come up empty so far.
So, I decided to try and figure something out myself, and dug into the jar files of the backup. I've succeeded in identifying which files contain the content for the trivia and setups and payoffs tracks so far, and I intend to make a subtitle file to drop into my plex library. This will at least give me the info, if not all the styling associated with it. Just wanted to share in case anyone else is looking for it like I have been, I've located to contents, so I can point you to it if you need help!
For the visual side of the setups and payoffs, it looks like I'll have to extract that video track from the m2ts file and use Resolve or Premiere Pro to create a new file with the PIP functionality as a part of the single stream. I'm currently doing that with my Ghostbusters Slimer Mode PIP.
I guess the goal of this was to try and help anyone out there who is looking to accomplish the same as me, but if anyone knows a better way of using the jar files to populate my srt tracks rather than me doing it by hand, that would be greatly appreciated!
Back to the Future Blu Ray U-Control on Plex
Re: Back to the Future Blu Ray U-Control on Plex
I’ve been scouring the internet to find the solution to this. I’m amazed there is so little about it mentioned anywhere. How’d your solution workout?
Re: Back to the Future Blu Ray U-Control on Plex
someone could help me locate the folder with the trivia track and the storyboards? Thanks
Re: Back to the Future Blu Ray U-Control on Plex
I'm also trying to find this (on the 30th Anniversary BTTF set), and would love to be directed to where to look in the jar files. Thanks!
Re: Back to the Future Blu Ray U-Control on Plex
I continued doing some more digging myself, and I figured out how to find the correct files, so I'll share for the sake of anyone else who may want to know.
A note up front: I don't really know what I'm doing here. I just took some stabs in the dark until I found something that worked. There may be a better way to do this, and I welcome others to share if so. Additionally, this is what worked for me on the 30th Anniversary Trilogy Blu-Ray Release of Back to the Future. I assume that the process would be similar for other releases and other films featuring U-Control content, but I can't guarantee it.
You're going to need a tool to decompile and read the Java files. I used JD-GUI. (I'm not sure what the guidelines are for sharing links on this forum, but it should be the first result to show up when searching for it, and it's a free download.)
With that installed, I opened all the jar files from the Blu-Ray in JD-GUI. Those jar files were found in [Blu-Ray root directory]/BDMV/JAR.
Once all the jar files were opened in JD-GUI, I used the search feature to search for snippets of text that I read from the U-Control content while watching the Blu-Ray. Note here that there are some particularities about this search:
In this case, all three Blu-Rays contain the complete U-Control files for all three movies, so you only need to grab them from one of them. However, I went ahead and grabbed them all just to be sure.
For both Parts I and III, the "Trivia" content is found in the "kk.class" file, and the "Setups & Payoffs" content is found in the "ju.class" file, both of which are within the "00000.jar" archive. For Part II, the "Trivia" content is found in the "ki.class" file, and the "Setups & Payoffs" content is found in the "jt.class" file, both of which are within the "00000.jar" archive.
These Blu-Rays also include a "Storyboard Comparison" U-Control feature, but I couldn't get that to do anything at all, even when watching the Blu-Ray itself. My best guess is that it's meant to take the storyboard sketches (available as standalone features) and place them as a picture-in-picture during the accompanying scenes, but it wouldn't work for me. In any case, I don't think that would include any significant text that would be worth copying out, and since the storyboard sketches are available as standalone video files, I don't feel like I'm missing anything by not grabbing them in this manner.
Now as to the files themselves, once decompiled in JD-GUI, they present us with a bunch of numbers first that I presume to be timestamps, but I haven't yet gotten around to trying to map them out. Then the text snippets are on their own toward the end, separated by commas, curly brackets, and quotation marks. If/when I get around to extracting them and mapping them to their appropriate timestamps, I'll update the thread accordingly. From there, it should be quite doable to convert them to srt files.
A note up front: I don't really know what I'm doing here. I just took some stabs in the dark until I found something that worked. There may be a better way to do this, and I welcome others to share if so. Additionally, this is what worked for me on the 30th Anniversary Trilogy Blu-Ray Release of Back to the Future. I assume that the process would be similar for other releases and other films featuring U-Control content, but I can't guarantee it.
You're going to need a tool to decompile and read the Java files. I used JD-GUI. (I'm not sure what the guidelines are for sharing links on this forum, but it should be the first result to show up when searching for it, and it's a free download.)
With that installed, I opened all the jar files from the Blu-Ray in JD-GUI. Those jar files were found in [Blu-Ray root directory]/BDMV/JAR.
Once all the jar files were opened in JD-GUI, I used the search feature to search for snippets of text that I read from the U-Control content while watching the Blu-Ray. Note here that there are some particularities about this search:
- You'll need to switch from "Type" to "String Constant." (Both should appear as check boxes when you open the search box.)
- This search is case sensitive.
- You'll have to search from the beginning of the U-Control snippet. For whatever reason, if you search for text from the middle of a given snippet, it won't show up.
- There are some instances of specially formatted text that won't be searchable at all. For example, the first Trivia snippet starts off with an italicized rendering of "Back to the Future," and searching for such won't yield the correct result. (In the file, the italicized text has an extra space between each letter, but searching for that doesn't yield anything either.)
In this case, all three Blu-Rays contain the complete U-Control files for all three movies, so you only need to grab them from one of them. However, I went ahead and grabbed them all just to be sure.
For both Parts I and III, the "Trivia" content is found in the "kk.class" file, and the "Setups & Payoffs" content is found in the "ju.class" file, both of which are within the "00000.jar" archive. For Part II, the "Trivia" content is found in the "ki.class" file, and the "Setups & Payoffs" content is found in the "jt.class" file, both of which are within the "00000.jar" archive.
These Blu-Rays also include a "Storyboard Comparison" U-Control feature, but I couldn't get that to do anything at all, even when watching the Blu-Ray itself. My best guess is that it's meant to take the storyboard sketches (available as standalone features) and place them as a picture-in-picture during the accompanying scenes, but it wouldn't work for me. In any case, I don't think that would include any significant text that would be worth copying out, and since the storyboard sketches are available as standalone video files, I don't feel like I'm missing anything by not grabbing them in this manner.
Now as to the files themselves, once decompiled in JD-GUI, they present us with a bunch of numbers first that I presume to be timestamps, but I haven't yet gotten around to trying to map them out. Then the text snippets are on their own toward the end, separated by commas, curly brackets, and quotation marks. If/when I get around to extracting them and mapping them to their appropriate timestamps, I'll update the thread accordingly. From there, it should be quite doable to convert them to srt files.
Last edited by Chuck216 on Mon Mar 11, 2024 9:36 pm, edited 1 time in total.
Re: Back to the Future Blu Ray U-Control on Plex
Okay, here's how to wrangle it into an srt file.
From within JD-GUI, I saved the relevant class file as a txt file, so I could work with the decompiled text elsewhere. Just do "Save" (there's no "Save As"), pick whatever name and local directory you want for it, and manually add the .txt extension to the file name you're saving it to.
Then I opened that txt file in a text editor. I used EditPad Lite 8 for its powerful search and replace and regex capabilities.
Once the file was opened in EditPad, it became more apparent what was going on with that text I referenced earlier that shows up as italicized on the Blu-Ray features and as characters with extra spaces between them in the files. Turns out they're actually "fullwidth" Unicode characters being used as a stand-in for italics formatting. There are also some "circled" Unicode characters being used as a stand-in for bold formatting.
So the first thing I did was to replace those instances with plain text wrapped in italics or bold tags. There may be a way to automate this, but I couldn't quickly find a straightforward method, and it was easy enough to do this part manually. Look for a few other similar instances of special characters that may not display correctly, like superscripted ordinal numbers and forced line breaks. There are also a number of double spaces scattered throughout. Those don't show up on the U-Control snippets in the Blu-Ray, but they will show up on the subtitles if left. A search and replace easily gets rid of them.
I then separated out the three chunks of text entries that are one for each of the three films, and I saved each as a separate text file. (Be sure to preserve the full original. We'll need to return to that.)
Those text entries are preceded by:
You can delete everything from that and above for the separated text files (assuming you've preserved that full copy).
Then the three chunks of text are separated by their encompassing curly brackets. You can easily find the separations with:
With each chunk of text saved to its own txt file, I then used search and replace to remove all the separating brackets and commas, and put each text snippet on a new line. I left the quotation marks in place surrounding each.
From there, I copied and pasted the lines of text into Google Sheets spreadsheets (six total sheets, one per film and per Trivia/Setups & Payoffs), where they will be easier to work with.
Next I pulled out the timestamps. Those are located in the first major section and are preceeded by:
As with the text snippets, they're broken into three groups, one for each film, and I first saved each of those as separate text files. They're again separated by their encompassing curly brackets, and you can find the separations with:
From there, I again used search and replace to remove separating commas and superfluous indent spaces, and place each timestamp on a new line. Then I copied and pasted those into their corresponding Google Sheets.
However, there are two issues with these timestamps. First, they're all written in total milliseconds, and we want them spelled out in hh:mm:ss,000 format. And second, there are two entries for each text snippet, start and end. And we want to get those two separated out into two columns of text, with start and end times right next to each other. So we'll use some formulas to fix these issues.
To get the timestamps in hh:mm:ss,000 format, I used this formula:
Then, to separate the start and end times into separate columns, I used this formula:
That gets us two columns with all the timestamps written out in the correct format. From there, I copied the resulting columns and pasted as values to finalize them. Then you can delete the other timestamp columns used to get to this point, and place the column of text snippets next to the final timestamps.
From here, I had to make a few more adjustments based on a few of the text snippets which were spaced out over a series of slides in a single pop-up. You'll find the data for these in the second main section from the original file, preceded by:
I didn't come up with an easy way to automate this, but there are few enough of them that it isn't too bad to do it by hand. You can find them in the spreadsheet we created by searching for:
Then just split those extra snippets out into new rows, use previous processes to turn the corresponding timestamps into the appropriate format, and plot them out accordingly.
Once all that's done, there are plenty of options to convert the spreadsheet to your subtitle format of choice. This video gives you an overview of one easy option. I did more-or-less the same, but in Sheets and EditPad.
That's the gist of it. Hope this is helpful to the next person to pop by this thread in another two years or so, haha. Feel free to ask if I missed anything.
From within JD-GUI, I saved the relevant class file as a txt file, so I could work with the decompiled text elsewhere. Just do "Save" (there's no "Save As"), pick whatever name and local directory you want for it, and manually add the .txt extension to the file name you're saving it to.
Then I opened that txt file in a text editor. I used EditPad Lite 8 for its powerful search and replace and regex capabilities.
Once the file was opened in EditPad, it became more apparent what was going on with that text I referenced earlier that shows up as italicized on the Blu-Ray features and as characters with extra spaces between them in the files. Turns out they're actually "fullwidth" Unicode characters being used as a stand-in for italics formatting. There are also some "circled" Unicode characters being used as a stand-in for bold formatting.
So the first thing I did was to replace those instances with plain text wrapped in italics or bold tags. There may be a way to automate this, but I couldn't quickly find a straightforward method, and it was easy enough to do this part manually. Look for a few other similar instances of special characters that may not display correctly, like superscripted ordinal numbers and forced line breaks. There are also a number of double spaces scattered throughout. Those don't show up on the U-Control snippets in the Blu-Ray, but they will show up on the subtitles if left. A search and replace easily gets rid of them.
I then separated out the three chunks of text entries that are one for each of the three films, and I saved each as a separate text file. (Be sure to preserve the full original. We'll need to return to that.)
Those text entries are preceded by:
Code: Select all
public static final String[][][] d = new String[][][] { {
Then the three chunks of text are separated by their encompassing curly brackets. You can easily find the separations with:
Code: Select all
} }, {
From there, I copied and pasted the lines of text into Google Sheets spreadsheets (six total sheets, one per film and per Trivia/Setups & Payoffs), where they will be easier to work with.
Next I pulled out the timestamps. Those are located in the first major section and are preceeded by:
Code: Select all
public class kk {
public static final int[][] a = new int[][] { {
Code: Select all
}, {
However, there are two issues with these timestamps. First, they're all written in total milliseconds, and we want them spelled out in hh:mm:ss,000 format. And second, there are two entries for each text snippet, start and end. And we want to get those two separated out into two columns of text, with start and end times right next to each other. So we'll use some formulas to fix these issues.
To get the timestamps in hh:mm:ss,000 format, I used this formula:
Code: Select all
=INDEX(IF(A:A="",,TEXT(A:A/86400000, "hh:mm:ss,000")))
Code: Select all
={filter(B:B,isodd(row(B:B))),filter(B:B,iseven(row(B:B)))}
From here, I had to make a few more adjustments based on a few of the text snippets which were spaced out over a series of slides in a single pop-up. You'll find the data for these in the second main section from the original file, preceded by:
Code: Select all
public static final int[][][] b = new int[][][] { {
Code: Select all
, "
Once all that's done, there are plenty of options to convert the spreadsheet to your subtitle format of choice. This video gives you an overview of one easy option. I did more-or-less the same, but in Sheets and EditPad.
That's the gist of it. Hope this is helpful to the next person to pop by this thread in another two years or so, haha. Feel free to ask if I missed anything.