High Definition Disk Formats

From MythTV Official Wiki
Jump to: navigation, search

Overview

It is possible to play back Hi-Def media such as Blu-ray and HD-DVD Disks in MythTV. While it is currently impossible to place a HD-DVD disk in the drive and play it with MythTV, one can rip the files onto the hard drive and play them with the internal player. Blu-ray playback of some material directly from the disc and as a folder structure on a hard drive is possible. Please note the following caveats before following this guide:

  • Decrypting copy-protected media may be illegal where you live. Take note of any local laws concerning the circumvention of copy-protection and act accordingly.
  • Playback of 1080p content is extremely processor-intensive unless you use hardware acceleration such as VDPAU. Many users download 1080p content from the internet that has been transcoded and downsampled to very low bitrates. True HD-DVD and Blu-ray rips average between two and four times higher bitrates. These files are therefore substantially more difficult to play. The advantage to this method is that the quality is vastly superior when viewing an untranscoded rip.
  • This guide is written for use with Ubuntu, but there is very little within that cannot be directly applied to any other distribution.
  • Menus and other interactive content are currently unavailable in Linux. The user will only be able to play the video files on the disk.
  • Some blu-ray disks with BD+ encryption can now be ripped under linux. There are Windows alternatives that are able to offer more comprehensive BD+ ripping support. One option is SlySoft AnyDVD HD, which rips both HD-DVD and Blu-ray disk formats.

Understanding HD-DVD and Blu-ray structure

Blu-ray and HD-DVD are fundamentally the same creature from a linux perspective. Both contain muxed files using either the MPEG-4 Part 10 (H.264), VC1, or MPEG-2 codecs, and audio tracks in AC-3, E-AC3, DTSHD or TrueHD (MLP) audio formats. HD-DVD uses the EVO container which is analogous to a VOB file in DVD parlance. Blu-Ray uses M2TS, or MPEG-2 Transport Stream containers. The video formats on both disk types are well understood and have various levels of support in FFmpeg.

Blu-Ray features are generally found in a collection of .m2ts files, while HD-DVD features are usually two or more EVO files (Usually the two largest on the disk and sequentially numbered, ie FEATURE_1.EVO and FEATURE_2.EVO).

Ripping Hi-Definition Media

DumpHD

To rip Hi-Def Media to the disk with DumpHD, you will need all of the following:

  • A drive capable of playing back the media you intend to rip (ie the Xbox 360 HD-DVD Drive or the LG GGC-H20L HD-DVD/Blu-ray Combo Drive)
  • Adequate disk space for the entire movie, generally between 25-50 GB/disk. After removing extras and menus, this is commonly 20-30 GB/movie.
  • A Kernel with UDF 2.5 Support (Most current distros as of 2009 ship with this)

  1. Begin by downloading DumpHD, available at the Doom9 Forums. Navigate to the directory where you downloaded the file and untar it:
    tar xvzf dumphd-0.6.tar.gz
  2. Download the current copy of aacskeys at Doom9. Navigate to the directory where you downloaded the file and untar it:
    tar xvzf aacskeys-0.4.0.tar.gz
  3. Enter the aacskeys directory:
    cd aacskeys-0.4.0/
  4. Build the aacs source:
    make
  5. Copy the ProcessingDeviceKeysSimple.txt to the DumpHD directory:
    cp ProcessingDeviceKeysSimple.txt ~/dumphd-0.6/
  6. Enter the DumpHD lib directory and copy the appropriate version of libaacskeys.so to the DumpHD directory. If you are on 32 bit Linux, this will be lib/linux32 from within the aacskeys source. If you are on 64 bit Linux, this will be lib/linux64 from within the aacskeys source. Example:
    cd lib/linux64 && cp libaacskeys.so ~/dumphd-0.6/
  7. Start DumpHD and insert the HD-DVD or Blu-ray Disk into your drive.
    cd dumphd_0.6 && bash dumphd.sh
  8. Click "Browse" in the upper right and navigate to your disk (ie, /media/300_HDDVD) and select it as the source.
  9. Click "Browse" in the section marked "Destination" to select the directory in which to copy the files (ie, /tmp).
  10. Click "Dump" to begin ripping the disk.
  11. Optional Step: If the feature is composed of multiple files, you can append the files with the cat command.
    cat FEATURE_1.EVO FEATURE_2.EVO > outfile.evo


Erase any extra files. Only the feature film is necessary for playback.

Note! The above instructions pertain only to AACS protected disks. BD+ decryption is still in its infancy. More information to follow.

MakeMKV 1.8.0

MakeMKV offers a way to stream or to store BD and BD+ discs on your network

  1. Install prerequisites
    sudo apt-get install build-essential libc6-dev libssl-dev libgl1-mesa-dev libqt4-dev
  2. Get binary files
    wget http://www.makemkv.com/download/makemkv-bin-1.8.0.tar.gz
  3. Get source files
    wget http://www.makemkv.com/download/makemkv-oss-1.8.0.tar.gz
  4. Unpack archives
    tar -xvf makemkv-bin-1.8.0.tar.gz && tar -xvf makemkv-oss-1.8.0.tar.gz
  5. cd into each source directory and run the following two steps
  6. Make
    make -f makefile.linux
  7. Install
    sudo make -f makefile.linux install

To stream

  1. Run the application /usr/bin/makemkv
  2. Go to File, Open Disc > Select your Blu-Ray drive
  3. Once MakeMKV finishes opening the blu-ray disc, it will list the titles and file information
  4. Go to File menu and choose "Stream"
  5. MakeMKV will look like "Buffer State" and "File Position" are stuck, but look in the dialog box at the beginning for something similar to: "Operation sucessfully completed. Streaming server started, web server address is..."


To connect and watch

  1. Open VLC and go to Media, Open Network Stream
  2. Protocol should HTTP, in the address box put http://localhost:51000/stream/title0.ts The port option should be greyed out.
  3. Click Play and enjoy your blu-ray movies within Linux


Thanks to
http://themediaviking.com/software/bluray-linux/
http://www.makemkv.com/forum2/viewtopic.php?f=3&t=224

Automatic Ripping and Import

Automatic ripping and import is available through makeMKV-Autoripper. It is a Python script that will automatically rip and compress titles to a directory named after the movie title.

Some nice features include:

  • Automatic look up
  • Queuing of makeMKV files into Handbrake for re-encoding to save space.
  • Support for calling mythutil to re-scan your video collection after the rip is complete.
  • Prowl notifications to iOS devices, allowing you to walk away and come back when everything is done. Notifications include:
    • Rip Start
    • Rip End and total time.
    • Errors in the process.
  • Subtitle download if none available on disc
  • Rename on disc or hash look up
  • Automatic Eject when complete

Installation and usage instructions are in the Readme.

Firmware Patching to get Volume ID

If you happen to own a Plextor PX-B920SA / LG GGW-H20*/ LG GGC-H20* optical drive and have issues with revoked player keys, fear not, a firmware patch for your drive is available that will cause the drive to report the Volume ID needed to decrypt the disc regardless. You can find links to the altered firmware on Doom9.

Important.png Note: Patching firmware is risky and should only be done if you know what you're doing and you accept the risk of invalidating your drive's warranty, possible execution of malicious code or even rendering your drive unusable (bricked).


Simply run the firmware update file for your drive under Wine and enjoy. Note that you may have to run wine as root for this to work.

AnyDVD HD

AnyDVD HD operating in VMWare.

You can also run the Windows tool AnyDVD HD in a VMWare or VirtualBox instance. AnyDVD HD will *not* work in Wine. In VMWare, you can rip the files wherever you like, then copy them to your MythVideo share via Samba.
Another alternative is sharing from Windows the decrypted disk, mounting it over samba and playing it directly from Myth. This method has the advantage of requiring no disk space, and playing straight from the disk with almost no delay

AnyDVD is by far the most capable Blu-ray and HD-DVD ripping software available. Whereas DumpHD is limited to the AACS keys in the downloaded file, AnyDVD HD can rip any AACS encrypted disk. It can also rip all known BD+ encrypted disks. Almost all new disks are encrypted with BD+, making AnyDVD the only software capable of ripping them. It is available for purchase from SlySoft.

Playing Hi-Definition Material

Watching With the Internal Player (recommended)

With TrueHD/MLP and E-AC-3 support in ffmpeg, Myth has gained full out-of-the-box support of playback for these files as of version 0.22. As of MythTV .24, the internal player is capable of playing Blu-ray disc structures both directly from the disc and from the folder structure on a hard drive.

MythTV 0.25 or trunk from December 10th 2010, supports bitstreaming of E-AC3, DTS-HD High-Res, TrueHD and DTS-HD MA. Check the HD Audio Passthrough page on how to get it going.

The minimum requirements are:

  • MythTV .24 or later
  • A Blu-ray drive


  • (using libaacs) For discs protected by AACS MKB version 10 or lower, and not protected by BD+:
    • libAACS compiled, installed, and functional. It does not need to be present at MythTV compile time.
    • A properly configured KEYDB.cfg located at ~/.mythtv/KEYDB.cfg (see this libAACS thread for instructions on how to properly edit the file)
    • You will probably need some information contained in aacskeys, and the above thread will tell you how to use it.

Important.png Note: The only required items in the KEYDB.cfg file are the Host Certificate (HC) and Processing Keys (PK) entries. The information to use for each of these is in the aacskeys zip file. You do not need to create a line item for each disc! If you have accurate Certificate and Processing Key information, and are pointing the player at the correct mountpoint, the Volume Unique Keys will be calculated automatically.


  • (using MakeMKV libaacs emulation) You can use MakeMKV libaacs emulation to play any disc that MakeMKV can support, including BD+ discs and discs protected by newer AACS MKB versions:
    • Install MakeMKV 1.8.5 or later. Official instructions are here
    • DO NOT install libaacs. Instead, create a link to MakeMKV's libmmbd as described here


Warning.png Warning: With Myth 0.24, You must point the player at the actual mount point of the device. Some distributions (such as Ubuntu) symlink /media/cdrom0 to /media/cdrom. Decryption will FAIL if you point it at the symlink! If /proc/mounts says that your Blu-ray drive mounts to /media/cdrom0, use that. (Starting from 0.25, this is no longer required, myth will automatically determine the correct path

In 0.25, straight from the disc playback is possible from the Optical Disk menu, provided the path to the bluray disk mounting point has been setup in Setup->Media Setting->Video Settings->Player Settings.
In 0.24, this is only possible from the command line using the mythavtest utility. Launch it by pointing mythavtest at its mount point, eg:

mythavtest bd:///media/cdrom0

If the disk does not play, you can increase the verbosity of the decryption libraries by prefacing the command with BD_DEBUG_MASK=8, example:

BD_DEBUG_MASK=8 mythavtest bd:///media/cdrom0

Blu-ray and a consistent mount point

Many distro's will mount Blu-ray media in a personal folder and include the volume name like /media/username/volumename. This is a problem for MythTV as it wants to see the Blu-ray media in a specific location every time regardless of the volume. To accomplish this on more modern Linux distro's with udev, do the following:
1. Change the permissions on the root of the current mount directory. In Ubuntu distro's, its /media, so

sudo chmod 777 /media

2. create the file /etc/udev/rules.d/99-udisks2.rules

sudo vi /etc/udev/rules.d/99-udisks2.rules

3. Add this line to the udev rule

ENV{ID_FS_USAGE}=="filesystem", ENV{ID_CDROM_MEDIA_BD}=="1", ENV{UDISKS_FILESYSTEM_SHARED}="1", ENV{ID_FS_LABEL_ENC}="bluray"

4. Reload udev

sudo udevadm control --reload

Now, when you insert your Blu-ray media, it will always mount at /media/bluray. You should now go to setup->media setting->video settings->player settings on the MythTV front-end and make sure Blu-ray Mount is /media/bluray.

Watching With External Players

Warning.png Warning: Using external players for this material is not advised. Switching audio and subtitle tracks is easier in MythTV's player, and external players may offer only limited (or no) support for libbluray/libaacs.

Mplayer and FFmpeg now include support for the MLP/TrueHD and E-AC3 audio codecs in SVN, and require no patching for this material. It is advisable to compile both, as ffmpeg will make it easier to determine what type of audio tracks are available.

Once you have patched, compiled, and installed mplayer as appropriate, you need to edit the codecs.conf file in your ~/.mplayer/ directory. There may be a copy you can edit and copy in /etc/mplayer. Insert the following into the existing codecs.conf file:

audiocodec mlp
  info "FFMpeg mlp"
  status buggy
  format 0x20504C4D
  driver ffmpeg
  dll "mlp"

At this point, it is possible to play back your film. If you patched and compiled FFMpeg, use it to inspect your film (In this case a rip of the "300" HD-DVD). The format is "ffmpeg -i filename".

root@mythtv:~# ffmpeg -i /movies/300.EVO 
FFmpeg version SVN-r11584, Copyright (c) 2000-2008 Fabrice Bellard, et al.
  configuration: --prefix=/usr --enable-shared --enable-gpl --enable-pp --enable-swscaler --enable-pthreads --enable-liba52 --enable-liba52bin --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-libgsm --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid
  libavutil version: 49.6.0
  libavcodec version: 51.49.0
  libavformat version: 52.5.0
  libavdevice version: 52.0.0
  built on Jan 20 2008 18:24:00, gcc: 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)
Input #0, mpeg, from '/movies/300.EVO':
  Duration: 01:56:32.5, start: 20523.753856, bitrate: 22580 kb/s
    Stream #0.0[0xfd55]: Video: vc1, yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], 29.97 tb(r)
    Stream #0.1[0xfd56]: Video: vc1, yuv420p, 720x480 [PAR 40:33 DAR 20:11], 29.97 tb(r)
    Stream #0.2[0xc4]: Audio: liba52, 48000 Hz, stereo, 192 kb/s
    Stream #0.3[0xc3]: Audio: liba52, 48000 Hz, 5:1, 640 kb/s
    Stream #0.4[0xb1]: Audio: mlp, 48000 Hz, 5:1
    Stream #0.5[0xc2]: Audio: liba52, 48000 Hz, 5:1, 640 kb/s
    Stream #0.6[0xc0]: Audio: liba52, 48000 Hz, 5:1, 640 kb/s
On movies with MLP audio tracks, it is best to use it rather than the liba52 tracks (these tracks can be either E-AC-3 or AC-3). In order to play the film, you must specify the demuxer, the audio codec, the audio ID, and the frame rate. For all HD-DVD movies, the demuxer will remain the same. The other options will change. With newer versions of mplayer (i.e. SVN-29134), you may need to add
-lavfdopts format=mpeg
to the command line when playing back EVO files.

On this rip of 300 HD-DVD, the correct command line is:

mplayer -fs -vo xv -demuxer lavf -ac mlp -aid 4 -fps 24000/1001 /movies/300.EVO

Note: If -ac mlp does not work on your system, try -ac ffmlp.

This command line invokes MPlayer in full screen mode with Xv output, sets the demuxer to lavf, the audio codec to MLP, the audio track number to 4 (derived from the ffmpeg output, "Stream #0.4"), and the frame rate to 23.97. To play back one of the E-AC3 tracks in the same file, use a command like this:

mplayer -fs -vo xv -demuxer lavf -ac ffac3 -aid 3 -fps 24000/1001 /movies/300.EVO

Note: If -ac ffac3 does not work on your system, try -ac ffeac3.

Many Blu-Ray movies can follow the '300' HD-DVD example above, but sometimes mplayer has trouble finding the correct audio track using the lavf demuxer. If you have problems, try using
-demuxer mpegts
instead. Sometimes mpegts does a better job at seeing the main audio track.

If you experience slow playback, try the following options:

-lavdopts threads=2:fast:skiploopfilter=all -sws 0 -framedrop

This will remove all processing of the file and play back multithreaded if possible.

If the playback works properly, copy the file into your MythTV video directory. Enter the Video Manager in MythTV's frontend. Select the film from the list and press the right arrow. Select "Edit Metadata." The last option is to set a custom player command for the file. Paste or type the command you used into the box and press "Done." The file should now play back as any other in MythVideo.