I want to convert a 2D PGS subtitle to a 3D HalfSBS subtitle without OCR, keeping the original subs as they are.
I have a movie (in this case, disney's "The Little Mermaid") in both 2D and 3D. A 3D Blu-Ray featuring my language does not exist, as we never got the 3D version, but we do have a nice 2D version that does. So I bought both versions, thinking I'd take the audio and subtitles in my language from our local 2D release and add them to the 3D version.
I ripped both versions with DVDFab, and encoded the 3D one to HalfSBS. As expected, everything synced perfectly right away. But...
I want to maintain the styling of the subtitles, meaning I don't want to OCR them and use 3DSubtitler after. I just want to convert a 2D PGS to a 3D HalfSBS PGS.
First, I tried ripping the 3D version without selecting 3D options in DVDFab, muxing the PGS in the result, and encode it to HalfSBS. It worked, but the subs were turned into VobSub. The option to choose VobSub or PGS subs wasn't present in DVDFab during encoding from this "remux". 11 Hours wasted lol.
Then I found out about a tool called "Suppe3D.exe". It supposedly does what I need, but I can't find a download anywhere anymore.
Then I tried BD3D2MK3D with the remuxed file from my first attempt, but it smells my file does not come from MakeMKV. I started suspecting DVDFab ditches the MVS during copying at this point.
Then, I tried ripping the 2D version with 3D settings in DVDFab, hoping to extract the subs from the result and adding them to my HalfSBS encode. It again took 11 hours (even with CRF 30 and all settings on "Fast"), but it actually worked! Yay! The subs do appear a little low, but using BDSup2Sub, this can easily be fixed.
I do, however, find 11 hours a incredibly long time to spend on just getting your subs right. Isn't there a easier and faster way to do this? Maybe preventing the need to reposition the subs?
+ Reply to Thread
Results 1 to 26 of 26
Hi, I'm the author of BD3D2MK3D.
Normally, you have everything you need with BD3D2MK3D. And, as far as I know, it's the only software able to convert a 3D movie to SBS or TAB and preserve the original depth of the subtitles. (All other converters put the subtitles on the surface of the screen, and it's a terrible experience for the brain!)
BD3D2MK3D requires as input an unencrypted ISO or a MKV created by MakeMKV with the original AVC and MVC video streams untouched. For the ISO input, you have to rip the BD to an unencrypted ISO first (for example with DVDFab HD Decrypter) or use an on the fly decrypting tool like AnyDVD HD. For the MakeMKV input, you should use MakeMKV (free while in beta with the key available here) to create a MKV with all audio and subtitle streams you need, plus the MVC video stream (disabled by default). Any other way to create a MKV is not compatible with BD3D2MK3D, as you will lose the important information from the MVC stream.
Normally, BD3D2MK3D creates the final MKV automatically. However, it is easy to import an additional audio or subtitle stream, with some knowledge.
To import your subtitle stream in 3D, you should generate the project with the 3DBD, and include at least one subtitle streams available in the 3DBD (with the option to convert it to 3D ticked in tab 2). I call that stream the "source stream" or "guide". It will be used later to position your subtitles correctly. For best results, select a language that ressembles your language.
When the project is ready, extract the subtitle stream you need from the 2D BD, and convert it to 3D with Subtitles Tools -> Convert Subtitle to 3D (with 3D-Plane/OFS). You have to select the 3D-plane associated with the source subtitle stream. (See the end of the 3D-Planes.log file to see what stream is associated with what OFS file.) You may also have to use the "temp_2D.xml" file generated by BD3D2MK3D in the folder of the source subtitle stream as a guide for the subtitle positions on screen, if some source subtitles are placed at different positions on screen (for example, at the top of the screen, or to the left or right, to avoid entering in the foremost objects.) If you carefully select the right options, you should obtain a perfect (or almost perfect) 3D subtitle stream, with the right depth for each subtitle.
When the conversion is finished, edit the file "__MUX_3D_OPTIONS.json" to replace the original subtitle stream with yours. You should change the track name, the language code and of course the file name, at the end of the section. (You may also need to change the --sync option if you need to resync the subtitles, but usually it's not necessary.) Note that BD3D2MK3D can keep the 3D and 2D versions of the subtitle stream (depending of the options selected in tab 2). If you kept the 2D version, you should edit the 2D subtitle too.
Finally, launch __ENCODE_3D_LAUNCHER.cmd to generate the final MKV file, and everything should be fine.
Note that you need a player that can display the 3D subtitles correctly. It's rarely the case with the hardware players, like most 3D TVs. If you cannot display the 3D subtitles correctly, I suggest to use the option to hardcode the 3D subtitles in the final image (in the last tab of BD3D2MK3D). The procedure is similar, but instead of modifying the file __MUX_3D_OPTIONS.json, you should edit the file __ENCODE_3D_MOVIE.avs, and simply replace the file name of the subtitle stream in the line beginning with SupTitle(.
Good luck, and feel free to ask more info if necessary...
Thanks! Just using Subtitles Tools -> Convert Subtitle to 3D did the trick for me. I left the 3D plane field open. The subtitle placement was correct right away.
Is it still necessary to follow the other steps? All Disney 3D BD's (including Marvel ones) I've encountered so far didn't have any depth, as far as I could see. Also, I think the number of subtitle lines might be different. Is this a problem?
Well, if you did not use the 3D-plane, the subtitles cannot have the right depths. And I'm sure all Disney/Marvel releases have (good) 3D-Planes, with the correct depth for each subtitle. Only cheap and Asian movies (or the ISOs re-encoded for a BD25 usually found on the internet) have usually no depth or simply a fixed depth that is not suitable for all subtitles in the stream. Major US movies are always authored correctly.
The placement of your stream can be correct in X and Y, but wrong in Z (the depth). So, if you want good results, you have to follow the instructions above. Or, if you can manage to extract the MVC video stream from your 3D-BD, you can simply extract the 3D-Planes from that stream with the command-line tool MVCPlanes2OFS.exe (available in the "toolset" folder of BD3D2MK3D) and use one of them to convert your subtitles.
Of course, when the subtitle stream has been correctly converted to 3D, you do not need to encode the movie with BD3D2MK3D. You can just mux it with your video file already converted to SBS. The method I've explained above is more time consuming, but almost totally automatic, and IMO simpler. And as an additional benefit, you will encode your movie with x264, a MUCH better encoder than most commercial encoders.
Of course, if you are happy with the subtitles entering in the foreground objects, it's up to you. Personally, I cannot support that !
Maybe Holland gets bad releases? I saw some headache inducing stuff on Civil War, for instance. Subtitles don't even move out of the way when disturbing 3D, like moving to the top, or the side of the screen or something.
Anyway, I will try re-encoding with your tool, then, following the steps. Truth be told, I didn't like encoding with DVDFab one bit anyway, but at the time, I didn't know of any other tool that could encode to (Half)SBS. I usually use ffmpeg (which is similar to x264, I think?) and that worked for me for years. I was especially frustrated about DVDFab lacking a option to set quality/speed options, which I prefer at veryslow. Fortunately, your tool has it. If this works out (and I assume it does), I have a new favourite HalfSBS encoding tool.
After that I've found out how to encode to HalfSBS with ffmpeg, but it would require me to first figure out which eye is the standard one, then set the appropriate options. Your tool is probably a lot simpeler.
Thanks for everything! You're my hero this week.
But you forgot to answer one question: Is it a problem if the number of subtitle lines in the 2D and 3D subs are different? Or does it grab the depth from the video.
Oh, and one other question, can your tool also open BD Folders? Haven't succeeded in that except by mounting the folder as an ISO using another tool and open that.
No big problem, as it works, but maybe I'm just doing something wrong. Your tool does say "open ISO or Folder" so I thought I'd ask.
I don't think that Disney produces badly authored 3D BDs anywhere in the world. I lives in Belgium, and most releases are made for the whole Benelux. As I wrote above, I have never seen a Disney 3DBD without 3D-Planes. And I love animation, so I did many Disney. Anyway, if you re-encode your movie with BD3D2MK3D, you will see a warning if a specific subtitle stream you have converted has no 3D-Plane, or if the 3D-Plane contains only undefined depth values. (There are more details in the 3D-Planes.log file.)
The number of subtitles differ usually for different languages. The 3D-Plane contains the depth values for all frames in the movie, so it doesn't matter much if a stream has more or less subtitles than the guide. However, there are also frames with "undefined depth" in the 3D-Plane. Usually, they are only where there is no subtitle to display. If your stream has a subtitle in that frames, it will not have the correct depth, but luckily, it's relatively rare. However, when you have the choice, I suggest to not use the subtitles of the original language of the movie for the guide, as it doesn't translate the strings shown in the video (called "forced subtitles"). For example, the title of an English movie can be translated to your language, but since it is displayed on screen in English, there is of course no English subtitle to duplicate it, and there will probably be no depth values when the title appears. It's why it is preferable to use a language similar to yours for the guide, like Spanish for a French stream, where all forced subtitles are translated. The global number of characters in the translation may also be important, as it influences directly the width of the subtitles, and wider subtitles may not perfectly fit between the foreground objects. Choosing a more verbose language for the guide may therefore give better results.
BD3D2MK3D can open BD folders, yes, but I strongly suggest to create only an ISO, as ripping to a folder will create two times all video files for all 3D content, and that will be long and consume much disc space. It's due to the specific 3D format, with a file for the 2D content, and one for the 3D. Both are merged together within a third file, virtual on the BD, but that will (probably) be created in the folder, hence doubling the file size. Also, ripping to an ISO is usually faster and safer.
Or you can use the MakeMKV method. Since you need to process only the main movie (without the menus and bonus) and the audio and subtitle streams you really need, it's certainly the most rapid method, and it requires less disc space. Just don't forget to tick the MVC stream, or you will rip only the 2D version of the movie. It might also be a good idea to tick the JPEG picture at the end of the stream list if you want it as the icon for your 3D MKV file.
I already knew about the foreign language for the "guide" subtitle as you call it thing, but thanks anyway. The standard subs tend to be subs for the hearing impaired with some movies, so I'm well aware. Not sure if it's possible in this case, but nevermind. The only forced subtitle in this case is the movie title anyway. And in this case, the background at that moment is far in the back, so there shouldn't be any problems there.
I prefer ISO too, but I have some Folders ripped that won't convert to iso. Guess I'll have to re-rip them to ISO directly. Or use the mounting method and delete the folders after. It's mainly just so my daughters and sister can enjoy the movie in 3D, as they don't speak English (fully) yet. They probably don't care about the extras anyway. The ISO/folder is only for ripping/encoding.
Oh, and one last question. On the rightmost tab on your tool where you select the SBS/OU/FS stuff, it says "left view always first". Does this just mean that the Left eye will become the left side of your SBS file, or does it mean that it always assume the left eye is standard view? Some BD's, like Jungle Book, for instance, have right eye as standard view.
Thx for everything! Bedankt voor alles!
The subs for the hearing impaired are usually good to use for the guide, because they are much numerous than the standard translation subs. The risk of undefined frames is therefore less important than with the standard stream (with perhaps the exception of some forced subs).
The de-facto standard of the views order is left view to the left for SBS and on top for TAB. BD3D2MK3D is smart enough to extract the order of the view from the 3D BD (with, as far as I know, only one exception of a badly authored BD). It swaps the views automatically if it's necessary, to respect the de-facto standard. Therefore, the views of the final SBS video are normally always in the correct order. (The option Right View First in the dialog of the 3D conversion of the subtitles is useful only if you want to generate the 3D subs for a downloaded SBS/TAB with inverted views, like some shorts available on Youtube. It should never be used for a movie converted by BD3D2MK3D.)
Thx again. Suspected as much. I still have one question, tho. Should really be the last one.
There is an option to only use the core 5.1 audio of DTS-HD MA, TrueHD and E-AC3. Why is it HIGHLY RECOMMENDED to tick this box? I'd like to preserve the DTS-HD MA.
Oh, "highly" is perhaps too much! It is mainly there for historical reasons, as when I started to write BD3D2MK3D, most TVs were unable to play the HD tracks.
The problem is that a DTS HD-MA track on the BD is in fact composed of two different tracks, merged together so that only one track is visible to the user. Many peoples think that their TV or audio equipment can play the HD-MA track, but in fact, only the 5.1 DTS track is really used. In a MKV container, it is not possible to keep the two merged tracks together, so you have to select only the DTS or the HD-MA sub-track. I recommend DTS for compatibility reasons, and also because it doesn't consume much disc size, but of course, if you know what you are doing, you can keep the HD-MA track. (Be sure to select the right track also in MakeMKV if you use that extraction method.)
It's not the same thing with AC3/THD, where there is really a core and an extension, and things are usually better understood by the users. Again, you may prefer the quality over the file size. It's your choice.
Not only does it say "highly", it's in caps even lol.
I do prefer quality over file size. At least since I got my new hdd. I play my stuff usually through a Sony BD player or a modded PS3, both of which seem to accept DTS-HD MA just fine.
But I'm pretty sure MKV can contain DTS-HDMA and only use what's necessary. I have created lots of MKV files that say "Master Audio / Core" and "8 / 6 channels" on mediainfo. They also work perfectly fine, even if 7.1 HDMA is played on a 5.1 set.
Hi, it's been a while, but I've been really busy. Anyways, I've been experimenting with your tool quite a bit now, and found some things I thought I'd mention. None of these are complaints, just sharing my expierences, hoping to help you improve your tool, so that it might become the only 3D-ripping software suite you ever need to use. I would love that.
The solution you mentioned above does work like a charm, but it does require some editing. When I applied the 2D XML's X and Y axes of the German subs to the Dutch subs on another project, some of them were slightly off, I suspect the German subs sometimes have 1 line where the Dutch ones have 2 or vice-versa. Or maybe the "ß" character. This is easily fixed with BDSup2Sub++, which fortunately is included in your package, by using the edit frame function and fixing the Y values. Then one needs to watch the movie with the newly exported subs and fix the couple instances were text still goes into foreground objects by manually adjusting either the depth or location of said lines. Then you indeed have 100% perfect results. But unfortunatly this process can't be automated. This is not a complaint, just a heads up for others who need to do this too.
Then, there's another thing one needs to be aware of. Sometimes not all subtitle lines are ripped when you rip the "guide" subtitles from the BD. So far, it happened to me twice that only about the first 60 lines were ripped. Both were Disney movies (UK Jungle Book remake and Dutch Beauty and the Beast Classic), but not all Disney's do this. I have seen others export all subtitles fine. I suspect it's because of one the external tools your program uses, but I thought I'd mention. In fact, only the HDBDStreamExtractor tool for eac3to never failed to rip even one line for me. Many SUP extractors (even just 2D ones) produce subs which sometimes miss 1-5 lines throughout the movie. I fix this problem when I encounter it by extracting the subs with HDBDStreamExtractor, then apply the 3d-planes to those with your tool. Haven't tested if that works yet, but I'm 99.99% sure it does. Unless your tool stops ripping the 3d-planes after 60 lines too, but seeing as it's done in a different step, I suspect it doesn't. Will test that asap. Maybe you can fix this by including HDBDStreamExtractor in BD3D2MK3D?
Last time I tried using it to encode, it failed on me, but that might be because of lack of good video drivers or some plugins. Will look into it soon.
And about the HD-MA vs hardware thing, I can confirm the following: DTS-HD MA 5.1 works on literally every piece of hardware I own, most of which is pretty old. DTS-HD MA 7.1 is a different story. 7.1 produces ear raping noise on all my stuff, except a modded PS3 and a Sony 3D Blu-Ray 5.1 Home Theater set, wich just use the 5.1 DTS core and still make it sound awesome. They even mention "DTS-HD MA 7.1 not supported. Using 5.1 DTS core" like a true gentleman. I think most hardware can't use just the 5.1 core, and that's why some devices can, and most can't? Anyways, just wanted to let you know it's a 7.1 thing and not a HD MA thing.
Other than that, this tool is perfection itself!
Last edited by RajaSteve; 13th Oct 2019 at 09:38.
I can implement a similar option for the conversion of BD SUB to 3D if you wish.
tsMuxeR, that produces perhaps somewhat buggy SUP files (at least in some cases). I will try to investigate this, and with some luck that bug will be fixed rapidly.
I must admit that I forgot to verify if MkvToolnix can really mux a DTS-HD-MA with its 5.1 (pseudo-)core. IIRC, when I've tried that, the core was silently removed (as you can verify if you demux the stream: the original 7.1+5.1 was larger than the 7.1-only demuxed stream.) Perhaps things have changed now. I will have a look.
Also, IIRC, old audio equipment cannot "see" the 7.1 MA stream in a BD, and they are supposed to detect and play only the 5.1 sub-stream. Of course, some more recent players, like your Sony, can perhaps detect the 7.1 stream, and still refuse to play it, due to its lack of the right decoder. And everything can be different with MKV files.
Anyway, your experience tends to accredit the fact that muxing the two substreams as a combined stream is not a good idea. Personally, I would prefer to mux them as two totally independent streams, and it will be the responsivity of the user to select the stream that works best for his equipment.
And I have just changed the HIGHLY RECOMMENDED string in the second tab to "for compatibility & disc space".
Oh, yes. Sorry. Big confusion. I'm tired.
So, if you don't tick the "Use 5.1 core" option, you got the full 7.1 stream. It is up to you to decide, and I don't see what I can do, except changing the HIGHLY RECOMMENDED warning (and I just did it.)
End of story.
About the HD-MA, turns out there is a DTS core that DOES includes extensions. I don't know if that's just the 2 extra channels or some other stuff, but I think sneaker is right, considering what I've found out so far.
And I can confirm MKVToolNix can mux those files correctly. Sometimes it produces a glitching file, but try the same thing again and it will work.
I trust you, but as I've explained above, I can't use HDBDStreamExctractor, as it's way too long, and too difficult for me.
Yes, MkvToolnix can mux 7.1 DTS-MA files. It's the "double" AC3 streams that it cannot mux as one single stream. Same confusion, and sorry again.
Anyways, if the 3D-planes are ripped fully, I can work around it. I will test it asap, should be by next weekend in a worst-case scenario.
But you must agree it would be cool if everything could be done from one tool.
I tend to avoid THD and haven't really tested it on hardware yet, although I can convert it to DTS-HD MA...
Finally found the time to test the project I started this topic for, and it was awesome! In this case, there wasn't even any editing required, as the subtitles were always in the usual location in the guide subs, so I didn't need to clone X and Y values. And the 3D-planes were fully compatible. Thanks, man!
I noticed eac3to being in your toolset folder, and considering HdBrStreamExtractor is a mere GUI for that, I think it might be possible (easy maybe even) to fix the bad SUP extraction after all. Of course, that's all up to you, like you said, it's easy to fix manually. Just thought I'd mention. If it's easy to re-write your code to use eac3to for SUP extraction you should be golden. I also noticed that BDSup2Sub++ tends to handle SUP much better than the regular BDSup2Sub, so I hope your tool uses ++. I've seen many cases where the regular version will give errors and skip some lines (sometimes a LOT of them), which ++ will correctly include. What does your tool use, exactly?
I haven't finished it yet, but after installing AviSynth+, your tool now lets me encode. So that probably was the culprit.
Thanks for the thanks, man !
In fact, the two BDSup2Sub versions have their own bugs. I have described them here. For that reason, BD3D2MK3D uses the two versions: the java version to open an XML stream, and the ++ version for a SUP file. You can easily see what version it uses if you open your stream with the menu Subtitle Tools -> Open Subtitle Stream in BDSup2Sub. That tool asks the filename, and then calls the best BDSup2Sub version, with a few command line arguments, necessary for example to avoid the little problem of the java version when you don't specify the frame rate. That doesn't mean that the method used by BD3D2MK3D to convert the subtitles to 3D is totally exempt of bugs, but I think they are avoided as much as possible (except perhaps for the missed subtitles bugs you have noticed).
BD3D2MK3D uses mainly eac2to to convert the audio streams to AC3 or AAC, but it uses it also to demux all streams in some very rare cases, when the MPLS is made of a lot of small M2TS files, because there is a bug in tsMuxeR, that crashes when there are too many entries in its list of files to join together (probably a buffer overflow). As you can see, the demux is already very complicated, as I have to take the bugs of the third party programs into account. It's one of the reasons why I don't like the idea to add again a new complexity, but the main reason is the additional time it will take to demux everything in several passes.
Also, honestly, I don't know at all HD-DVD/Blu-Ray Stream Extractor, but obviously it's only a GUI. So, I can probably add the code to demux the subtitles with the command line of eac3to only, but the problem is the fact that the program will have to do an additional pass just for that. Perhaps I can add a little helper in the Subtitles Tools menu to demux the subtitles only with eac3to and then convert them (again) to 3D if there are more subtitles in the new streams. You will have to select that tool manually after the main job is finished, and before opening another BD or selecting another MPLS so that the list of streams to keep and the list of the 3D-Planes assignments are still available. Unless you want to hardcode a subtitle stream in the video stream, you can do that after having launched the encoding. Is it OK for you ?
I have had a look at my code for the demux, and I remember now why I CANNOT use eac3to to demux the subtitles (and why I use it only when it is absolutely impossible to do the demux with tsMuxer). Originally, BD3D2MK3D used eac3to to demux everything, but I have discovered rapidly a terrible bug with the subtitles of some 3DBDs.
To understand the eac3to bug, you must know a few things. A movie in a 3DBD has 2 video streams : the AVC, or 2D h264 stream, and the MVC, or dependent stream, used only for the 3D. For compatibility reasons, the 2D AVC stream is stored in the 2D M2TS file, with all audio and subtitle streams, and the MVC video stream is stored alone in another M2TS file, that is referenced in the 3D extension of the playlist (the MPLS file). Since a 2D-only BD player doesn't read the 3D extension, it opens only the 2D M2TS, fully compatible with a 2D player. In the other hand, a 3D player must read the video streams in two M2TS files at the same time. Since bly-ray is a slow media, it is not possible to seek back and forth to read each frame in the corresponding stream. For that reason, the 2 M2TS files are interleaved together on the disk, and referenced together as a third, virtual file, the SSIF, that contains everything necessary to play the 3D movie.
The problem of the subtitles is that, on some 3DBD, the same subtitle stream is stored TWO TIMES: once in the 2D M2TS with the AVC video, as it should, and once in the 3D-specific M2TS, with the MVC stream. That's not a good idea, as the SSIF contains now two identical streams with the same UID, and if the demuxer uses the SSIF to demux everything, it gets confused by the two streams. It's exactly what happens with eac3to. It is TOTALLY UNABLE to demux properly the subtitle streams in that case. It issues thousands of error messages and usually it crashes before the end of the process. Although many 3DBDs do not have that problem, that case is NOT rare. For example, Avatar has that problem ! It's why I have had to switch to tsMuxer to demux everything. Of course, I can't go back to eac3to, as that bug has never been fixed.
So, to summarize, there are theoretically two possibilities: eac3to that will not work at all with some specific BDs but will demux correctly the others, and tsmuxer that can demux all BDs but misses some subtitles in some cases. I prefer the second solution, although I agree that it is not perfect. And I cannot add a second demux for the subtitles only in the main process, as if eac3to crashes, it will be impossible to complete the job. So, I can only propose to do what I have suggested in my previous post: add a tool that you will have to launch manually after having finished the main job, and that can offer better result in some cases, crash completely on others, and give the same result in most cases. (I suppose I can try to count the number of subtitles extracted by tsMuxer during the main process, and by eac3to with the additional tool, and display a dialog to inform the user in the case of eac3to has obtained a better result, but I'm not sure, as that will be two totally separated processes.)
Thx for the info. So the .ssif is a virtual file? Why do I see it physicly on my discs, then? Getting confused lol.
Anyways, your idea for the extra tool might be a good idea. Although, if it requires an extra pass, it would only save the user like 4 mouse-clicks. It wouldn't have saved time even if you did switch back to eac3to. You could also add an option to choose wether to use eac3to or tsMuxer for subtitle demuxing. But like I said, it won't save you much time.
Your theory is very likely correct, so getting 3D subs right will probably always require being aware of all bugs you mentioned. But at least it's possible.
Will try to test eac3to-extracted subs with BD3D2MK3D-extracted 3D-planes soon. This will tell us if your tool does extract the full 3D-planes even when tsMuxer only extracts the first 60 or so subs. I think it will work tho.
But convert your eac3to subs to 3D with the right 3D-Plane anyway. You should obtain the perfect 3D subtitles.