BLKMGK
29th February 2008, 00:32
Okay, it seems like there are many ways to transcode from HD-DVD and Blu-ray to other formats. When I did this it took me awhile and a great deal of question asking to figure it out. Now that I have a good working process I thought I'd share back. Much of what I learned came from this (http://forum.doom9.org/showthread.php?t=129001) thread however the tutorial on the first page is incomplete and links to some bugged tools which caused me some frustration - it's a good start though. In addition I see that at least one other has a tutorial (http://forum.doom9.org/showthread.php?t=134227) up that flows slightly different than mine which ought to be read. Lastly, I also learned a HUGE amount about eac3to from an excellent Wikipedia article that some ass deleted as SPAM - the Google cache is your friend.:mad:
Hopefully between these posts, mine, and others readers will find a path that works best for them and gain some understanding as to how the process works. This particular workflow process works for me, it may work for you, others work just as well. Please understand I'm no authority at this but I'm enjoying my vids just fine now thanks:devil:
Software Tools Needed:
EVOdemux (http://www.pel.hu/down/) (free)
eac3To (http://forum.doom9.org/showthread.php?t=125966) (free)
MKVtoolnix (http://www.bunkus.org/videotools/mkvtoolnix/) (free)
meGUI (http://forum.doom9.org/showthread.php?t=96032) (free)
Graphedt (free-Microsoft (http://msdn2.microsoft.com/en-us/library/ms787460.aspx)) (Google (http://www.google.com/search?q=graphedt+download&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a)for DL)
AnyDVD HD (http://www.slysoft.com/en/anydvdhd.html) or another ripper.
ffdshow (http://sourceforge.net/projects/ffdshow) (free) I could use a source for daily builds plz
AVIsynth (http://sourceforge.net/project/showfiles.php?group_id=57023) 2.5.7 (free)
WMP11 (http://www.microsoft.com/windows/windowsmedia/player/11/default.aspx) for VC-1 decoding (Microsoft but free)
I believe that is all. X.264, Haali, and others will be loaded by meGUI as will encoding profiles.
Hardware:
XBOX 360 add-on drive
FAST CPU! I'm running an e8400 C2D @4Ghz on Vista Ultimate64
Mass disk space - if a movie is 20Gigs I use 50 for processing and work files.
Okay, install all of that. Make sure that meGUI updates and has all the tools it wants. Before diving in some information that wasn't clear to ME when I started this - HD-DVD has more than one video encoding, there are also multiple audio encodings. Some HD-DVD are encoded with H.264, others with VC-1, some trailers or Easter eggs may even be MPEG. Likewise you will see EAC3 and DTS audio encodings. The specific video encoding will change which path you take when it comes time to compress the videos - IF you choose to transcode them at all.
Here's what I do when I do *not* want to compress a video further and am happy with the encoding CODEC:
Rip DVD, delete all non EVO extension files. Of the files left I usually only keep the main movie files but sometimes choose to keep the trailers or Easter eggs. It's these smaller ones I'll often not bother to compress. Often the movie file will be named "Feature_1.EVO" and sometimes a second "Feature_2.EVO" file will exist. Sometimes they are named pretty weird but always with the _1 and _2 in the name, I rename them to Feature_# to keep things consistent when I find this. Bring up a CMD window and navigate to where eac3TO is installed. eac3to -test will test the eac3to install.
D:\Video\eac3to>eac3to -test
Sonic Audio Decoder (2.25.0.0) doesn't seem to be installed
Nero Audio Decoder (Nero 7 or older) is not working correctly
Haali Media Splitter (2007-12-29) is installed
Surcode DTS Encoder doesn't seem to be installed
MkvToolnix (v2.1.0) is installed
That's right I have no fancy CODECS installed.:eek: eac3to is very powerful and can take specific video tracks out of an EVO and place them into a MKV container for you as well as pull specific audio tracks from the video file. I suspect that it can put them both into a MKV file with one command but I've not figured out the commandline. eac3to can also give you information on the content in an EVO file.
D:\Video\eac3to>eac3to f:\Children\FEATURE_1.EVO+f:\Children\FEATURE_2.EVO
EVO, 2 video tracks, 3 audio tracks, 1:49:16
1: Joined EVO file
2: VC-1, 1080p24 (16:9) /1.001
3: VC-1, 480p30 (3:2) /1.001
4: E-AC3, 5.1 channels, 1536kbit/s, 48khz, dialnorm: -27dB
5: E-AC3, 5.1 channels, 768kbit/s, 48khz, dialnorm: -27dB
6: E-AC3, 2.0 channels, 192kbit/s, 48khz, dialnorm: -27dB, -27ms
This video is VC-1 encoded in stream #2 and has an E-AC3 5.1 soundtrack as stream #4. The following command will place stream #2 into a MKV container and encode stream #4 as a FLAC file.
D:\Video\eac3to>eac3to f:\Children\FEATURE_1.EVO+f:\Children\FEATURE_2.EVO 2: f:\Children\children-vid.mkv 4: f:\Childre
n\children-aud.flac -libav
Note you have to give it pathnames etc. and the -libav switch on the end which tells eac3to to use it's INTERNAL decoder on the EAC3 audio. This also works on DTS in my experience and I am happy with the sound. This will produce a hefty MKV and a Flac file that's probably 2+Gigs. It is possible to use many other audio extensions for the audio, AC3 would produce a soundtrack about 500Megs in size from this for instance but AC3 is lossy I'm told. It still sounds fine to my ears. There's some contention on audio formats so read some of the responses to this post plz. Note the numbers and colons - that is where I'm specifying the streams I wish to process followed by the file I wish to place them in and it's format via the extension.
Finally to merge these I use mkvmerge GUI from the MKVtoolnix install to mux them. Drag drop both onto this tool, give it an output name and path, kick it off, and in a short time you have a completed file. In this case it would still be using VC-1 encoding but if it had been H.264 as a source it would retain that as well.
But what if you want to shrink it down or encode in another CODEC?
First rip as before.
Note: The following use of EVOdemux is not needed! Bring up EVOdemux and make sure the options tab has "Continue with the next EVO checked". Drag&drop the Feature_1 file into the windows on the Status tab. This will process the EVO file and give you information about it that will look like this at the end:
1439 counted frames (0:01:00.018) in video stream 0.
1439 calculated frames in video stream 0.
Copy this data down, you will need the calculated frames number later. Use eac3to as before to create a MKV file and an audio file. Take note of whether or not the video is H.264 or VC-1 encoded.
===========Update===========
Okay, when eac3to is used to split out the video and audio it spits out a framecount, this framecount is the same as what EVOdemux spits out so use that number in the following AVIsynth script detailed below. Here's what the output will look like->
Added fps value to MKV header.
Video track 2 contains 173762 frames.
Video track 3 contains 204974 frames.
eac3to processing took 18 minutes, 28 seconds.
Done.
============================
If the video is VC-1 encoded here is what you do as learned from a previous tutorial (http://forum.doom9.org/showthread.php?p=1035422#post1035422) from Taktaal
First, we have to build a GraphEdit graph. Open the software, but don't drag&drop the EVO into it. That will open it with the default filter which will probably be Sonic Cineplayer and that's bugged and will lead to desynchronized audio.
Instead, choose "Graph" -> "Insert Filters...", then choose "DirectShow Filters" -> "Haali Media Splitter" and insert that. You'll get a popup asking you for a file to split, select the .EVO that you rebuilt earlier
Next, insert the "WMVideo Decoder DMO" Filter, and connect the EVO file with the decoder
If you get an error here, you forgot upgrading WMP to version 11.
Save the graph.
Next, create an AviSynth script to load the graph. A very basic sample:
DirectShowSource("serenity.grf", fps=23.976, framecount=171229, audio=false)
What's important here is that you have to manually set the movie to the correct framerate (always 23.976 for HD-DVDs) and set the correct framecount according to the number EVODemux calculated for you earlier or you received from eac3to. If you don't set those two options you'll get a bugged encode.
Also you can add dozens of other AviSynth options here like cropping away black bars, make sure the movie dimensions are dividable by 16, filtering away movie grain, scaling for mobile devices etc. Those options are out of scope for this guide and you should refer to the AviSynth Wiki for them.
Save the Avisynth script. (extension is .AVS)
At this point I fire up meGUI but Taktall has given some excellent X.264 encoding commandlines too. meGUI is pretty easy to use and allows for queuing of many files so I prefer it. Simply open the AVS script file from meGUI's File Open dialog and select the profile you'd like to use in meGUI. The SA-HD-DVD profile is a good starter but I've bumped my bitrate way up and tweaked some other things so my files tend to be somewhat large. One thing I'd ensure is turned on the CABAC checkbox under RC and ME as I *believe* this is what is allowing for multi-core decodes on playback for me right now. More later. Once meGUI has completed compressing your video file you still need to add the audio file, I do this as before using mkvmerge GUI. There, done!
For an H.264 encoded file you follow the SAME process as VC-1 with ONE exception. Instead of inserting the "WMVideo Decoder DMO" filter you will instead use the "ffdshow Video Decoder" DirectShow filter. Thank you Blue_MiSfit (http://forum.doom9.org/showthread.php?p=1100544#post1100544)!
I think this pretty well covers how I'm doing things as clearly as possible. I may yet buy Nero's HD-DVD plugin for V7 and I own COREAVC's decoder too but haven't used it. Before I tweaked my encoding profile some of my resulting videos were as small as 5Gigs, now with my processing turned up I see about 9Gigs or sometimes more on big movies. It will take HOURS to process and heat your machine up good so be sure you can handle the time and the machine can handle the heat. If it crashes meGUI will at least allow you to keep the first pass but midway through a 13hour long second pass is a terrible time to have it crash:eek:
I play my videos back using XBMC under Linux (http://www.xboxmediacenter.com/forum/forumdisplay.php?f=52) at full 1080 rez with digital surround sound with both cores utilized around 40% on a 3Ghz clocked C2D. It's PURTY! This is streamed from home-built unRAID NAS (http://www.lime-technology.com/) in my office via Gig ethernet, no glitches.
I'll shut-up now and hope that this is useful to someone. I will try to answer questions but realize please that I too still have much to learn.:cool:
Hopefully between these posts, mine, and others readers will find a path that works best for them and gain some understanding as to how the process works. This particular workflow process works for me, it may work for you, others work just as well. Please understand I'm no authority at this but I'm enjoying my vids just fine now thanks:devil:
Software Tools Needed:
EVOdemux (http://www.pel.hu/down/) (free)
eac3To (http://forum.doom9.org/showthread.php?t=125966) (free)
MKVtoolnix (http://www.bunkus.org/videotools/mkvtoolnix/) (free)
meGUI (http://forum.doom9.org/showthread.php?t=96032) (free)
Graphedt (free-Microsoft (http://msdn2.microsoft.com/en-us/library/ms787460.aspx)) (Google (http://www.google.com/search?q=graphedt+download&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a)for DL)
AnyDVD HD (http://www.slysoft.com/en/anydvdhd.html) or another ripper.
ffdshow (http://sourceforge.net/projects/ffdshow) (free) I could use a source for daily builds plz
AVIsynth (http://sourceforge.net/project/showfiles.php?group_id=57023) 2.5.7 (free)
WMP11 (http://www.microsoft.com/windows/windowsmedia/player/11/default.aspx) for VC-1 decoding (Microsoft but free)
I believe that is all. X.264, Haali, and others will be loaded by meGUI as will encoding profiles.
Hardware:
XBOX 360 add-on drive
FAST CPU! I'm running an e8400 C2D @4Ghz on Vista Ultimate64
Mass disk space - if a movie is 20Gigs I use 50 for processing and work files.
Okay, install all of that. Make sure that meGUI updates and has all the tools it wants. Before diving in some information that wasn't clear to ME when I started this - HD-DVD has more than one video encoding, there are also multiple audio encodings. Some HD-DVD are encoded with H.264, others with VC-1, some trailers or Easter eggs may even be MPEG. Likewise you will see EAC3 and DTS audio encodings. The specific video encoding will change which path you take when it comes time to compress the videos - IF you choose to transcode them at all.
Here's what I do when I do *not* want to compress a video further and am happy with the encoding CODEC:
Rip DVD, delete all non EVO extension files. Of the files left I usually only keep the main movie files but sometimes choose to keep the trailers or Easter eggs. It's these smaller ones I'll often not bother to compress. Often the movie file will be named "Feature_1.EVO" and sometimes a second "Feature_2.EVO" file will exist. Sometimes they are named pretty weird but always with the _1 and _2 in the name, I rename them to Feature_# to keep things consistent when I find this. Bring up a CMD window and navigate to where eac3TO is installed. eac3to -test will test the eac3to install.
D:\Video\eac3to>eac3to -test
Sonic Audio Decoder (2.25.0.0) doesn't seem to be installed
Nero Audio Decoder (Nero 7 or older) is not working correctly
Haali Media Splitter (2007-12-29) is installed
Surcode DTS Encoder doesn't seem to be installed
MkvToolnix (v2.1.0) is installed
That's right I have no fancy CODECS installed.:eek: eac3to is very powerful and can take specific video tracks out of an EVO and place them into a MKV container for you as well as pull specific audio tracks from the video file. I suspect that it can put them both into a MKV file with one command but I've not figured out the commandline. eac3to can also give you information on the content in an EVO file.
D:\Video\eac3to>eac3to f:\Children\FEATURE_1.EVO+f:\Children\FEATURE_2.EVO
EVO, 2 video tracks, 3 audio tracks, 1:49:16
1: Joined EVO file
2: VC-1, 1080p24 (16:9) /1.001
3: VC-1, 480p30 (3:2) /1.001
4: E-AC3, 5.1 channels, 1536kbit/s, 48khz, dialnorm: -27dB
5: E-AC3, 5.1 channels, 768kbit/s, 48khz, dialnorm: -27dB
6: E-AC3, 2.0 channels, 192kbit/s, 48khz, dialnorm: -27dB, -27ms
This video is VC-1 encoded in stream #2 and has an E-AC3 5.1 soundtrack as stream #4. The following command will place stream #2 into a MKV container and encode stream #4 as a FLAC file.
D:\Video\eac3to>eac3to f:\Children\FEATURE_1.EVO+f:\Children\FEATURE_2.EVO 2: f:\Children\children-vid.mkv 4: f:\Childre
n\children-aud.flac -libav
Note you have to give it pathnames etc. and the -libav switch on the end which tells eac3to to use it's INTERNAL decoder on the EAC3 audio. This also works on DTS in my experience and I am happy with the sound. This will produce a hefty MKV and a Flac file that's probably 2+Gigs. It is possible to use many other audio extensions for the audio, AC3 would produce a soundtrack about 500Megs in size from this for instance but AC3 is lossy I'm told. It still sounds fine to my ears. There's some contention on audio formats so read some of the responses to this post plz. Note the numbers and colons - that is where I'm specifying the streams I wish to process followed by the file I wish to place them in and it's format via the extension.
Finally to merge these I use mkvmerge GUI from the MKVtoolnix install to mux them. Drag drop both onto this tool, give it an output name and path, kick it off, and in a short time you have a completed file. In this case it would still be using VC-1 encoding but if it had been H.264 as a source it would retain that as well.
But what if you want to shrink it down or encode in another CODEC?
First rip as before.
Note: The following use of EVOdemux is not needed! Bring up EVOdemux and make sure the options tab has "Continue with the next EVO checked". Drag&drop the Feature_1 file into the windows on the Status tab. This will process the EVO file and give you information about it that will look like this at the end:
1439 counted frames (0:01:00.018) in video stream 0.
1439 calculated frames in video stream 0.
Copy this data down, you will need the calculated frames number later. Use eac3to as before to create a MKV file and an audio file. Take note of whether or not the video is H.264 or VC-1 encoded.
===========Update===========
Okay, when eac3to is used to split out the video and audio it spits out a framecount, this framecount is the same as what EVOdemux spits out so use that number in the following AVIsynth script detailed below. Here's what the output will look like->
Added fps value to MKV header.
Video track 2 contains 173762 frames.
Video track 3 contains 204974 frames.
eac3to processing took 18 minutes, 28 seconds.
Done.
============================
If the video is VC-1 encoded here is what you do as learned from a previous tutorial (http://forum.doom9.org/showthread.php?p=1035422#post1035422) from Taktaal
First, we have to build a GraphEdit graph. Open the software, but don't drag&drop the EVO into it. That will open it with the default filter which will probably be Sonic Cineplayer and that's bugged and will lead to desynchronized audio.
Instead, choose "Graph" -> "Insert Filters...", then choose "DirectShow Filters" -> "Haali Media Splitter" and insert that. You'll get a popup asking you for a file to split, select the .EVO that you rebuilt earlier
Next, insert the "WMVideo Decoder DMO" Filter, and connect the EVO file with the decoder
If you get an error here, you forgot upgrading WMP to version 11.
Save the graph.
Next, create an AviSynth script to load the graph. A very basic sample:
DirectShowSource("serenity.grf", fps=23.976, framecount=171229, audio=false)
What's important here is that you have to manually set the movie to the correct framerate (always 23.976 for HD-DVDs) and set the correct framecount according to the number EVODemux calculated for you earlier or you received from eac3to. If you don't set those two options you'll get a bugged encode.
Also you can add dozens of other AviSynth options here like cropping away black bars, make sure the movie dimensions are dividable by 16, filtering away movie grain, scaling for mobile devices etc. Those options are out of scope for this guide and you should refer to the AviSynth Wiki for them.
Save the Avisynth script. (extension is .AVS)
At this point I fire up meGUI but Taktall has given some excellent X.264 encoding commandlines too. meGUI is pretty easy to use and allows for queuing of many files so I prefer it. Simply open the AVS script file from meGUI's File Open dialog and select the profile you'd like to use in meGUI. The SA-HD-DVD profile is a good starter but I've bumped my bitrate way up and tweaked some other things so my files tend to be somewhat large. One thing I'd ensure is turned on the CABAC checkbox under RC and ME as I *believe* this is what is allowing for multi-core decodes on playback for me right now. More later. Once meGUI has completed compressing your video file you still need to add the audio file, I do this as before using mkvmerge GUI. There, done!
For an H.264 encoded file you follow the SAME process as VC-1 with ONE exception. Instead of inserting the "WMVideo Decoder DMO" filter you will instead use the "ffdshow Video Decoder" DirectShow filter. Thank you Blue_MiSfit (http://forum.doom9.org/showthread.php?p=1100544#post1100544)!
I think this pretty well covers how I'm doing things as clearly as possible. I may yet buy Nero's HD-DVD plugin for V7 and I own COREAVC's decoder too but haven't used it. Before I tweaked my encoding profile some of my resulting videos were as small as 5Gigs, now with my processing turned up I see about 9Gigs or sometimes more on big movies. It will take HOURS to process and heat your machine up good so be sure you can handle the time and the machine can handle the heat. If it crashes meGUI will at least allow you to keep the first pass but midway through a 13hour long second pass is a terrible time to have it crash:eek:
I play my videos back using XBMC under Linux (http://www.xboxmediacenter.com/forum/forumdisplay.php?f=52) at full 1080 rez with digital surround sound with both cores utilized around 40% on a 3Ghz clocked C2D. It's PURTY! This is streamed from home-built unRAID NAS (http://www.lime-technology.com/) in my office via Gig ethernet, no glitches.
I'll shut-up now and hope that this is useful to someone. I will try to answer questions but realize please that I too still have much to learn.:cool: