MakeMKV on Linux

Table of Contents

Installing/Updating MakeMKV
Step 1: Downloads
Step 2: Unpack
Step 3: Aptitude update and packages
Step 4: Build and install makemkv-oss
Step 5: Build and install makemkv-bin
Step 6: Build with latest libavcodec
Step 7: Configure with ffmpeg
Step 8: Clean-up
First exercise in ripping
Second exercise in ripping
MakeMKV decoding of the Blu-ray
Handbrake encoding of result
Conclusion
A ripping example...
Copy protection
S'up with what's on this disk?

MakeMKV is "try out then buy" software for ripping media from DVD and Blu-ray disks. I long used Handbrake to rip and encode from DVDs, but could not continue to use it for Blu-rays. Now I typically use MakeMKV to rip from any disk, then Handbrake to decode.

The MKV part of the title refers to Matroska. This format is, in my opinion, superior to all other video file formats mostly because I have worked most with it, it can hold in addition to the content also subtitles.

Formally speaking, MakeMKV is a format converter or transcoder. It converts the video content (from disk or file) in proprietary formats and encodings into a set of Matroska (MKV) files. You can also use it to stream this content to your favorite players (but I have never used it for that purpose).

Installing/Updating MakeMKV

For what to do to get makemkv on Linux, makemkv.com/download/ recommends this site: http://www.makemkv.com/forum2/viewtopic.php?f=3&t=224

Step 1: Downloads

Do the downloads using the current ones on this site.

Eventually, this will be suggested too as a third download: http://ffmpeg.org/download.html

Ultimately, this fails attempting to build the final component because of an error about the libavcodec library. Here's what I did up to that error:

~ $ sudo bash
~ # mkdir blu-ray

Step 2: Aptitude update and add essential packages

~ # apt-get update
~ # apt-get install build-essential pkg-config libc6-dev libssl-dev libexpat1-dev libavcodec-dev libgl1-mesa-dev libqt4-dev
~ # cd blu-ray/
~/blu-ray # mv ../Downloads/makemkv* .
~/blu-ray # ll
total 16080
drwxr-xr-x  2 root root     4096 Nov  7 15:55 .
drwxr-xr-x 52 russ russ     4096 Nov  7 15:54 ..
-rw-r-----  1 russ russ 12229759 Nov  7 15:51 makemkv-bin-1.8.14.tar.gz
-rw-r-----  1 russ russ  4215754 Nov  7 15:51 makemkv-oss-1.8.14.tar.gz

Step 3: Unpack

~/blu-ray # tar -zxf makemkv-bin-1.8.14.tar.gz
~/blu-ray # tar -zxf makemkv-oss-1.8.14.tar.gz
~/blu-ray # ll
total 16088
drwxr-xr-x  4 root   root        4096 Nov  7 15:55 .
drwxr-xr-x 52 russ   russ        4096 Nov  7 15:54 ..
drwxr-xr-x  4 nobody nogroup     4096 Oct 21 06:25 makemkv-bin-1.8.14
-rw-r-----  1 russ   russ    12229759 Nov  7 15:51 makemkv-bin-1.8.14.tar.gz
drwxr-xr-x 13 nobody nogroup     4096 Oct 21 05:01 makemkv-oss-1.8.14
-rw-r-----  1 russ   russ     4215754 Nov  7 15:51 makemkv-oss-1.8.14.tar.gz

Step 4: Build and install makemkv-oss package

~/blu-ray/makemkv-oss-1.8.14 # ./configure
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
.
.
.
checking whether LIBAVCODEC_VERSION_MAJOR is declared... yes
checking LIBAVCODEC_VERSION_MAJOR... 53
checking for AVFrame.nb_samples... yes
checking whether AV_SAMPLE_FMT_U8P is declared... yes
checking for avcodec_encode_audio2... yes
checking for AVCodecContext.refcounted_frames... no
checking whether avcodec_free_frame is declared... no
checking for av_log_format_line... no
checking for enum AVCodecID... no
checking for enum CodecID... yes
checking whether AV_CODEC_ID_NONE is declared... no
checking whether CODEC_ID_NONE is declared... yes
checking whether av_frame_get_channels is declared... no
checking whether av_frame_get_sample_rate is declared... no
checking whether av_frame_set_channel_layout is declared... no
checking for AVCodecParserContext.duration... no
checking whether AV_CH_TOP_BACK_CENTER is declared... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating libffabi/src/ffabicfg.h
~/blu-ray/makemkv-oss-1.8.14 # make
mkdir -p out
gcc -g -O2 -D_GNU_SOURCE -D_linux_ -D_REENTRANT -shared -Wl,-z,defs -oout/libdriveio.so.0.full -Ilibdriveio/inc \
      libdriveio/src/infolist.cpp libdriveio/src/scsihlp.cpp libdriveio/src/srlist.cpp libdriveio/src/stdquery.cpp \
      libdriveio/src/tipclient.cpp libdriveio/src/tipcommon.cpp libdriveio/src/tipserver.cpp libdriveio/src/drives/pioneer.cpp \
      libdriveio/src/drives/xboxhddvd.cpp \
	-fPIC -Xlinker -dy -Xlinker --version-script=libdriveio/src/libdriveio.vers \
	-Xlinker -soname=libdriveio.so.0 -lc -lstdc++
objcopy --strip-all --strip-debug --strip-unneeded --discard-all out/libdriveio.so.0.full out/libdriveio.so.0
mkdir -p tmp
echo "#define BUILDINFO_ARCH_NAME \"x86_64-linux-gnu\"" >> tmp/gen_buildinfo.h
.
.
.
libffabi/src/mpegaudiodecheader.h:59:115: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
objcopy --strip-all --strip-debug --strip-unneeded --discard-all out/libmakemkv.so.1.full out/libmakemkv.so.1
mkdir -p tmp
/usr/bin/moc-qt4 -o tmp/moc_mainwnd.cpp makemkvgui/src/mainwnd.h
mkdir -p tmp
/usr/bin/moc-qt4 -o tmp/moc_logtext.cpp makemkvgui/src/logtext.h
mkdir -p tmp
/usr/bin/moc-qt4 -o tmp/moc_dirselectbox.cpp makemkvgui/src/dirselectbox.h
.
.
.
mkdir -p out
gcc -g -O2 -D_GNU_SOURCE -D_linux_ -D_REENTRANT -shared -Wl,-z,defs -oout/libmmbd.so.0.full -Imakemkvgui/inc -Ilibmmbd/inc \
	    -Ilibmakemkv/inc -Isstring/inc -Ilibabi/inc makemkvgui/src/client.cpp makemkvgui/src/marshall.cpp libmmbd/src/marmmbd.cpp \
	    libmmbd/src/nstring.cpp libmmbd/src/mmbd.cpp libmmbd/src/mmconn.cpp libmmbd/src/mmbdipc.cpp libmmbd/src/utf8.cpp libmmbd/src/aacs.cpp \
	    libmmbd/src/bdplus.cpp libmmbd/src/crypto_ossl.cpp makemkvgui/src/api_posix.cpp makemkvgui/src/api_linux.cpp makemkvgui/src/sem_posix.cpp \
	    makemkvgui/src/spawn_posix.cpp sstring/src/sstring.cpp \
	-fPIC -Xlinker -dy -Xlinker --version-script=libmmbd/src/libmmbd.vers \
	-Xlinker -soname=libmmbd.so.0 -lc -lstdc++ -lrt -lpthread -lcrypto
objcopy --strip-all --strip-debug --strip-unneeded --discard-all out/libmmbd.so.0.full out/libmmbd.so.0
type "sudo make install" to install
~/blu-ray/makemkv-oss-1.8.14 # make install
/usr/bin/install -c -D -m 644 out/libdriveio.so.0 /usr/lib/libdriveio.so.0
/usr/bin/install -c -D -m 644 out/libmakemkv.so.1 /usr/lib/libmakemkv.so.1
/usr/bin/install -c -D -m 644 out/libmmbd.so.0 /usr/lib/libmmbd.so.0
ldconfig
/usr/bin/install -c -D -m 755 out/makemkv /usr/bin/makemkv
/usr/bin/install -c -D -m 644 makemkvgui/share/makemkv.desktop /usr/share/applications/makemkv.desktop
/usr/bin/install -c -D -m 644 makemkvgui/share/icons/16x16/makemkv.png /usr/share/icons/hicolor/16x16/apps/makemkv.png
/usr/bin/install -c -D -m 644 makemkvgui/share/icons/22x22/makemkv.png /usr/share/icons/hicolor/22x22/apps/makemkv.png
/usr/bin/install -c -D -m 644 makemkvgui/share/icons/32x32/makemkv.png /usr/share/icons/hicolor/32x32/apps/makemkv.png
/usr/bin/install -c -D -m 644 makemkvgui/share/icons/64x64/makemkv.png /usr/share/icons/hicolor/64x64/apps/makemkv.png
/usr/bin/install -c -D -m 644 makemkvgui/share/icons/128x128/makemkv.png /usr/share/icons/hicolor/128x128/apps/makemkv.png
~/blu-ray/makemkv-oss-1.8.14 # cd ../makemkv-bin-1.8.14/

Step 5: Build and install makemkv-bin package

The make command is just accepting the EULA.

~/blu-ray/makemkv-bin-1.8.14 # make
Copyright (C) 2007-2014 GuinpinSoft inc

IMPORTANT NOTE

The Software, as defined below, is protected by copyright, which is vested in GuinpinSoft inc.

The Software may only be used in accordance with the terms and conditions set out in this document.

If you do not read and agree to be bound by the terms and conditions defined in this document, you are not permitted to keep or use the Software in any way
whatsoever and must destroy or return all copies of these items which are in your possession.
.
.
.
Appendix A
This installation package does not contain any Open-source Software components.

Appendix B
There are no open-source licenses applicable to this package.

( press 'q' to close this screen )
Please type "yes" if you accept the terms of the license
yes
type "sudo make install" to install
~/blu-ray/makemkv-bin-1.8.14 # make install
rm -f /usr/bin/makemkvcon
rm -f /usr/bin/mmdtsdec
rm -f /usr/share/MakeMKV/*.mo.gz
install -d /usr/share/MakeMKV
install -d /usr/bin
install -t /usr/bin bin/amd64/makemkvcon
install -t /usr/bin bin/i386/mmdtsdec
install -m 644 -t /usr/share/MakeMKV src/share/default.mmcp.xml
install -m 644 -t /usr/share/MakeMKV src/share/flac.mmcp.xml
install -m 644 -t /usr/share/MakeMKV src/share/wdtv.mmcp.xml
install -m 644 -t /usr/share/MakeMKV src/share/aac-stereo.mmcp.xml
install -m 644 -t /usr/share/MakeMKV src/share/makemkv_deu.mo.gz
install -m 644 -t /usr/share/MakeMKV src/share/makemkv_jpn.mo.gz
install -m 644 -t /usr/share/MakeMKV src/share/makemkv_spa.mo.gz
install -m 644 -t /usr/share/MakeMKV src/share/makemkv_ptb.mo.gz
install -m 644 -t /usr/share/MakeMKV src/share/makemkv_dut.mo.gz
install -m 644 -t /usr/share/MakeMKV src/share/makemkv_swe.mo.gz
install -m 644 -t /usr/share/MakeMKV src/share/makemkv_ita.mo.gz
install -m 644 -t /usr/share/MakeMKV src/share/makemkv_chi.mo.gz
install -m 644 -t /usr/share/MakeMKV src/share/makemkv_pol.mo.gz
install -m 644 -t /usr/share/MakeMKV src/share/makemkv_dan.mo.gz

Step 6: (Optional?) Build with latest libavcodec

(After the first couple of times, I stopped even trying to do this. It doesn't seem to make any difference.)

~/blu-ray # cd ..
~/blu-ray # ll
total 23292
drwxr-xr-x  4 russ   russ        4096 Nov  7 16:06 .
drwxr-xr-x 52 russ   russ        4096 Nov  7 15:54 ..
-rw-r-----  1 russ   russ     7369986 Nov  7 16:06 ffmpeg-2.4.3.tar.bz2
drwxr-xr-x  5 nobody nogroup     4096 Nov  7 16:02 makemkv-bin-1.8.14
-rw-r-----  1 russ   russ    12229759 Nov  7 15:51 makemkv-bin-1.8.14.tar.gz
drwxr-xr-x 15 nobody nogroup     4096 Nov  7 15:58 makemkv-oss-1.8.14
-rw-r-----  1 russ   russ     4215754 Nov  7 15:51 makemkv-oss-1.8.14.tar.gz
~/blu-ray # ll
total 61492
drwxr-xr-x  4 russ   russ        4096 Nov  7 16:07 .
drwxr-xr-x 52 russ   russ        4096 Nov  7 15:54 ..
-rw-r-----  1 russ   russ    46489600 Nov  7 16:06 ffmpeg-2.4.3.tar
drwxr-xr-x  5 nobody nogroup     4096 Nov  7 16:02 makemkv-bin-1.8.14
-rw-r-----  1 russ   russ    12229759 Nov  7 15:51 makemkv-bin-1.8.14.tar.gz
drwxr-xr-x 15 nobody nogroup     4096 Nov  7 15:58 makemkv-oss-1.8.14
-rw-r-----  1 russ   russ     4215754 Nov  7 15:51 makemkv-oss-1.8.14.tar.gz
~/blu-ray # tar -xf ffmpeg-2.4.3.tar
~/blu-ray # ll
total 61496
drwxr-xr-x  5 russ   russ        4096 Nov  7 16:08 .
drwxr-xr-x 52 russ   russ        4096 Nov  7 15:54 ..
drwxr-xr-x 16 russ   russ        4096 Nov  1 19:47 ffmpeg-2.4.3
-rw-r-----  1 russ   russ    46489600 Nov  7 16:06 ffmpeg-2.4.3.tar
drwxr-xr-x  5 nobody nogroup     4096 Nov  7 16:02 makemkv-bin-1.8.14
-rw-r-----  1 russ   russ    12229759 Nov  7 15:51 makemkv-bin-1.8.14.tar.gz
drwxr-xr-x 15 nobody nogroup     4096 Nov  7 15:58 makemkv-oss-1.8.14
-rw-r-----  1 russ   russ     4215754 Nov  7 15:51 makemkv-oss-1.8.14.tar.gz
~/blu-ray # cd ffmpeg-2.4.3/
~/blu-ray/ffmpeg-2.4.3 # ./configure --prefix=/tmp/ffmpeg --enable-static --disable-shared --enable-pic --disable-yasm
install prefix            /tmp/ffmpeg
source path               .
C compiler                gcc
C library                 glibc
ARCH                      x86 (generic)
big-endian                no
runtime cpu detection     yes
yasm                      no
MMX enabled               yes
.
.
.
Enabled bsfs:
aac_adtstoasc		imx_dump_header		mp3_header_decompress
chomp			mjpeg2jpeg		noise
dump_extradata		mjpega_dump_header	remove_extradata
h264_mp4toannexb	mov2textsub		text2movsub

Enabled indevs:
dv1394			lavfi			v4l2
fbdev			oss

Enabled outdevs:
fbdev			oss			v4l2

License: LGPL version 2.1 or later
Creating config.mak, config.h, and doc/config.texi...
~/blu-ray/ffmpeg-2.4.3 # ./configure --prefix=/tmp/ffmpeg --enable-static --disable-shared --enable-pic --disable-yasm --enable-libfdk-aac
ERROR: libfdk_aac not found

If you think configure made a mistake, make sure you are using the latest
version from Git.  If the latest version fails, report the problem to the
[email protected] mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file "config.log" produced by configure as this will help
solve the problem.
~/blu-ray/ffmpeg-2.4.3 # make install
HOSTCC	doc/print_options.o
In file included from doc/print_options.c:32:0:
./libavcodec/options_table.h:298:1: warning: ‘dtg_active_format’ is deprecated (declared at ./libavcodec/avcodec.h:1710) [-Wdeprecated-declarations]
./libavcodec/options_table.h:314:1: warning: ‘xvmc_acceleration’ is deprecated (declared at ./libavcodec/avcodec.h:1761) [-Wdeprecated-declarations]
./libavcodec/options_table.h:328:1: warning: ‘error_rate’ is deprecated (declared at ./libavcodec/avcodec.h:2949) [-Wdeprecated-declarations]
./libavcodec/options_table.h:383:1: warning: ‘scenechange_factor’ is deprecated (declared at ./libavcodec/avcodec.h:1910) [-Wdeprecated-declarations]
./libavcodec/options_table.h:392:1: warning: ‘request_channels’ is deprecated (declared at ./libavcodec/avcodec.h:2032) [-Wdeprecated-declarations]
HOSTLD	doc/print_options
GENTEXI	doc/avoptions_format.texi
GENTEXI	doc/avoptions_codec.texi
POD	doc/ffmpeg.pod
MAN	doc/ffmpeg.1
POD	doc/ffprobe.pod
MAN	doc/ffprobe.1
.
.
.
(very long time, hundreds or thousands of info lines like:)
CC	libavcodec/opus_imdct.o
CC	libavcodec/opus_parser.o
CC	libavcodec/opus_silk.o
CC	libavcodec/opusdec.o
.
.
.
(including warnings about stuff like this:)
libavcodec/resample.c:318:9: warning: ‘av_audio_convert’ is deprecated (declared at libavcodec/audioconvert.h:78) [-Wdeprecated-declarations]
libavcodec/resample.c:391:9: warning: ‘av_resample’ is deprecated (declared at libavcodec/avcodec.h:4597) [-Wdeprecated-declarations]
libavcodec/resample.c:413:9: warning: ‘av_audio_convert’ is deprecated (declared at libavcodec/audioconvert.h:78) [-Wdeprecated-declarations]
libavcodec/resample.c: In function ‘audio_resample_close’:
libavcodec/resample.c:433:5: warning: ‘av_resample_close’ is deprecated (declared at libavcodec/avcodec.h:4615) [-Wdeprecated-declarations]
libavcodec/resample.c:438:5: warning: ‘av_audio_convert_free’ is deprecated (declared at libavcodec/audioconvert.h:65) [-Wdeprecated-declarations]
libavcodec/resample.c:439:5: warning: ‘av_audio_convert_free’ is deprecated (declared at libavcodec/audioconvert.h:65) [-Wdeprecated-declarations]
.
.
.
INSTALL	libavutil/mathematics.h
INSTALL	libavutil/md5.h
INSTALL	libavutil/mem.h
INSTALL	libavutil/motion_vector.h
INSTALL	libavutil/murmur3.h
INSTALL	libavutil/dict.h
INSTALL	libavutil/old_pix_fmts.h
INSTALL	libavutil/opt.h
INSTALL	libavutil/parseutils.h
INSTALL	libavutil/pixdesc.h
INSTALL	libavutil/pixelutils.h
INSTALL	libavutil/pixfmt.h
INSTALL	libavutil/random_seed.h
INSTALL	libavutil/replaygain.h
INSTALL	libavutil/rational.h
INSTALL	libavutil/ripemd.h
INSTALL	libavutil/samplefmt.h
INSTALL	libavutil/sha.h
INSTALL	libavutil/sha512.h
INSTALL	libavutil/stereo3d.h
INSTALL	libavutil/threadmessage.h
INSTALL	libavutil/time.h
INSTALL	libavutil/timecode.h
INSTALL	libavutil/timestamp.h
INSTALL	libavutil/version.h
INSTALL	libavutil/xtea.h
INSTALL	libavutil/lzo.h
INSTALL	libavutil/avconfig.h
INSTALL	libavutil/ffversion.h
INSTALL	libavutil/libavutil.pc

Step 7: Configure and build makemkv-oss (again?) with ffmpeg

This bit is confusing and probably should be the object of greater scrutiny. Also, these instructions do date back some 6 years.

~/blu-ray/ffmpeg-2.4.3 # cd ../makemkv-oss-1.8.14/
~/blu-ray/makemkv-oss-1.8.14 # PKG_CONFIG_PATH=/tmp/ffmpeg/lib/pkgconfig ./configure
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for g++... g++
.
.
.
checking for expat.h... yes
checking for XML_ParserCreate in -lexpat... yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for ffmpeg... yes
checking whether LIBAVCODEC_VERSION_MAJOR is declared... yes
checking LIBAVCODEC_VERSION_MAJOR... 56
checking for AVFrame.nb_samples... yes
checking whether AV_SAMPLE_FMT_U8P is declared... yes
checking for avcodec_encode_audio2... no
configure: error: The libavcodec library is too old. Please get a recent one from http://www.ffmpeg.org
(note that this is what was in ffmpeg-2.4.3.tar presumably)
~/blu-ray/makemkv-oss-1.8.14 # ll /tmp/ffmpeg
total 32
drwxr-xr-x  6 root root  4096 Nov  7 16:20 .
drwxrwxrwt 20 root root 12288 Nov  7 16:22 ..
drwxr-xr-x  2 root root  4096 Nov  7 16:20 bin
drwxr-xr-x  9 root root  4096 Nov  7 16:20 include
drwxr-xr-x  3 root root  4096 Nov  7 16:20 lib
drwxr-xr-x  4 root root  4096 Nov  7 16:20 share
~/blu-ray/makemkv-oss-1.8.14 # ll /tmp/ffmpeg/lib/
total 188988
drwxr-xr-x 3 root root      4096 Nov  7 16:20 .
drwxr-xr-x 6 root root      4096 Nov  7 16:20 ..
-rw-r--r-- 1 root root 128969536 Nov  7 16:20 libavcodec.a
-rw-r--r-- 1 root root   1525588 Nov  7 16:20 libavdevice.a
-rw-r--r-- 1 root root  11028502 Nov  7 16:20 libavfilter.a
-rw-r--r-- 1 root root  45336838 Nov  7 16:20 libavformat.a
-rw-r--r-- 1 root root   1605676 Nov  7 16:20 libavutil.a
-rw-r--r-- 1 root root    495530 Nov  7 16:20 libswresample.a
-rw-r--r-- 1 root root   4533424 Nov  7 16:20 libswscale.a
drwxr-xr-x 2 root root      4096 Nov  7 16:20 pkgconfig
~/blu-ray/makemkv-oss-1.8.14 # locate libavcodec
/usr/lib/x86_64-linux-gnu/libavcodec.so.53
/usr/lib/x86_64-linux-gnu/libavcodec.so.53.35.0
/usr/share/doc/libavcodec-extra-53
/usr/share/doc/libavcodec-extra-53/README.Debian.gz
/usr/share/doc/libavcodec-extra-53/changelog.Debian.gz
/usr/share/doc/libavcodec-extra-53/codecs.txt.gz
/usr/share/doc/libavcodec-extra-53/copyright
/var/cache/apt/archives/libavcodec-extra-53_4%3a0.8.10ubuntu0.12.04.1_amd64.deb
/var/cache/apt/archives/libavcodec-extra-53_4%3a0.8.13ubuntu0.12.04.1_amd64.deb
/var/cache/apt/archives/libavcodec-extra-53_4%3a0.8.15ubuntu0.12.04.1_amd64.deb
/var/cache/apt/archives/libavcodec-extra-53_4%3a0.8.16ubuntu0.12.04.1_amd64.deb
/var/cache/apt/archives/libavcodec53_4%3a0.8.10-0ubuntu0.12.04.1_amd64.deb
/var/cache/apt/archives/libavcodec53_4%3a0.8.6-0ubuntu0.12.04.1_amd64.deb
/var/cache/apt/archives/libavcodec53_4%3a0.8.8-0ubuntu0.12.04.1_amd64.deb
/var/cache/apt/archives/libavcodec53_4%3a0.8.9-0ubuntu0.12.04.1_amd64.deb
/var/lib/dpkg/info/libavcodec-extra-53:amd64.list
/var/lib/dpkg/info/libavcodec-extra-53:amd64.md5sums
/var/lib/dpkg/info/libavcodec-extra-53:amd64.postinst
/var/lib/dpkg/info/libavcodec-extra-53:amd64.postrm
/var/lib/dpkg/info/libavcodec-extra-53:amd64.shlibs
/var/lib/dpkg/info/libavcodec53:amd64.list
/var/lib/dpkg/info/libavcodec53:amd64.postrm
~/blu-ray/makemkv-oss-1.8.14 # ll /usr/lib/x86_64-linux-gnu/libavcodec.*
-rw-r--r-- 1 root root 9473172 Sep 16 12:35 /usr/lib/x86_64-linux-gnu/libavcodec.a
lrwxrwxrwx 1 root root      21 Sep 16 12:35 /usr/lib/x86_64-linux-gnu/libavcodec.so -> libavcodec.so.53.35.0
lrwxrwxrwx 1 root root      21 Sep 16 13:13 /usr/lib/x86_64-linux-gnu/libavcodec.so.53 -> libavcodec.so.53.35.0
-rw-r--r-- 1 root root 6993912 Sep 16 13:13 /usr/lib/x86_64-linux-gnu/libavcodec.so.53.35.0

(Hmmmmm...)

Step 8: Clean-up

Didn't get this far, so I decided to take a look around.

MakeMKV

(Click on any image to see it full size.)

I was a little surprised to see that MakeMKV was now available in my application menu (under Sound & Video).

Registration (activation) key

I finally paid my $50 when it appeared I could no longer arrange for the software to work.


First exercise: attempting to rip Dinesh D'Souza's America

The question is, "Are we having fun yet?" Here MakeMKV has loaded a Blu-ray copy of Dinesh D'Souza's America which is 103 minutes long with some 40 minutes of extra material.

"Computer?" —working . . .

Done?

Yup, it's that big. Just what should I save? These are all chapters or something? It would appear that this will just about fill up my drive.

Saving ripped contents

It looks like this will take several hours.

Status messages explain choices MakeMKV makes during processing...

After 6 hours, I gave up checking in on this. Here we are the next morning...

More than 12 hours after starting, I'm confused as to what it's doing. It appears to be making progress, but at this rate it's not going to finish in my lifetime and I don't have warm fuzzies about what it's doing. Disk space, while not critical, is at 36% used—up from less than 20% when I started. Still, it kind of looks likes it knows what it's doing:

~/Videos $ tree America_Imagine_the_World_Without_Her/
America_Imagine_the_World_Without_Her/
+-- America_Imagine_the_World_Without_Her_t00.mkv
+-- America_Imagine_the_World_Without_Her_t01.mkv
+-- America_Imagine_the_World_Without_Her_t02.mkv
+-- America_Imagine_the_World_Without_Her_t03.mkv
+-- America_Imagine_the_World_Without_Her_t04.mkv
+-- America_Imagine_the_World_Without_Her_t05.mkv
`-- America_Imagine_the_World_Without_Her_t06.mkv

0 directories, 7 files
~/Videos $ ll America_Imagine_the_World_Without_Her/
total 182872296
drwxr-xr-x 2 russ russ        4096 Nov  8 03:51 .
drwxr-xr-x 3 russ russ        4096 Nov  7 19:05 ..
-rw-r--r-- 1 russ russ 26801778512 Nov  7 18:24 America_Imagine_the_World_Without_Her_t00.mkv
-rw-r--r-- 1 russ russ 26990305836 Nov  7 19:58 America_Imagine_the_World_Without_Her_t01.mkv
-rw-r--r-- 1 russ russ 26435940773 Nov  7 21:37 America_Imagine_the_World_Without_Her_t02.mkv
-rw-r--r-- 1 russ russ 26772478707 Nov  7 23:36 America_Imagine_the_World_Without_Her_t03.mkv
-rw-r--r-- 1 russ russ 26800699736 Nov  8 01:51 America_Imagine_the_World_Without_Her_t04.mkv
-rw-r--r-- 1 russ russ 26582872569 Nov  8 03:50 America_Imagine_the_World_Without_Her_t05.mkv
-rw-r--r-- 1 russ russ 26877100032 Nov  8 05:52 America_Imagine_the_World_Without_Her_t06.mkv

Just to show that the top status bar is the one that fluctuates on a per-file basis, this image is after -_t07 has begun to be generated:


Second exercise: attempting to rip George C. Scott's A Christmas Carol

I had trouble getting MakeMKV to recognize the Blu-ray peripheral this time. This might be because I disconnected it properly or something out of sequence. I rebooted. My desktop came up with A Christmas Carol mounted on the desktop.

Handbrake

I launched Handbrake and selected /dev/sr1. It scanned the disk, but reached no conclusion. I take from this that Handbrake doesn't know what to scan and it's unclear what and how to tell it to scan.

MakeMKV

So I launched MakeMKV. I did File → Open Disc and chose the drive with the title in it. It took a few seconds to analyze the disk which it appeared to do successfully. I unchecked what appeared to me to be only supplemental material.

Next, I began ripping by clicking the Make MKV button, answering Yes to the dialog confirming creating a new subdirectory under Videos. It began then to function just as America had done. Clearly, it appears to be going faster although the messages do not as yet give warmer fuzzies to me.

~/Videos $ ll A_Christmas_Carol/
total 917516
drwxr-xr-x 2 russ russ      4096 Nov  8 10:53 .
drwxr-xr-x 3 russ russ      4096 Nov  8 10:53 ..
-rw-r--r-- 1 russ russ 939524096 Nov  8 10:56 A_Christmas_Carol_t00.mkv

Looks like this one took a bit more than an hour.

After dismissing the alert:

And Handbrake is happy to open that file created by MakeMKV.

Handbrake seemed pleased with this. The final size was much larger than the (probably not Blu-ray) copy I had already. Scrunching that to save room, if it's possible, is an exercise for another time. The point for me is that it's worked including the subtitles and the resolution appears considerably better than the one whose origin was the DVD.

~/Videos $ ll
total 5148844
drwxr-xr-x  3 russ russ       4096 Nov  8 13:57 .
drwxr-xr-x 54 russ russ       4096 Nov  8 13:48 ..
drwxr-xr-x  2 russ russ       4096 Nov  8 10:53 A_Christmas_Carol
-rw-r--r--  1 russ russ 5272391687 Nov  8 15:11 A Christmas Carol.mkv
-rw-r--r--  1 russ russ       2662 Sep 25 19:33 DocMartin.list

[email protected]:/plex-movies/Movies/A Christmas Carol$ ll
total 750594
drwxrwxr-x   2 russ russ         3 Nov 24  2013 ./
drwxr-xr-x 190 russ russ       190 Nov  3 21:02 ../
-rw-r--r--   1 russ russ 767749440 Nov 24  2013 A Christmas Carol.m4v

"A triumph, my dear!"2

Notes:

2 Bob Cratchit to Mrs. Cratchit on her Christmas pudding.

Handbrake

As noted, after MakeMKV, Handbrake is used to open the resulting file and create the final movie file (.mkv). Above is an example using pretty much default Handbrake settings. It is possible, however, to do much better though it takes a very long time indeed.

~/Videos $ ll
total 2284920
drwxr-xr-x  4 russ russ       4096 Nov 12 15:04 .
drwxr-xr-x 54 russ russ       4096 Nov 12 15:04 ..
drwxr-xr-x  2 russ russ       4096 Nov  8 10:53 A_Christmas_Carol
-rw-r--r--  1 russ russ 2339729506 Nov 11 12:26 A Christmas Carol.mkv
-rw-r--r--  1 russ russ       2662 Sep 25 19:33 DocMartin.list

Re-encoding this using some custom settings, I was able to get the final product down to just over 44% of the original Handbrake result. At an average of under 1 frame per second, it did, however, take 2 or 3 days.

Conclusion

In the final assessment, I can't tell myself whether the final, 2-Gb effort produced a better quality result than the 5-Gb product, but I can say this:

  1. The file size is much smaller, closer to what I've been losing to DVD rips using Handbrake,
  2. it appears as luscious as the larger one to my eyes, and
  3. the Blu-ray copy, as compared to the DVD copy I've long had, is simply spectacular!

A ripping example...

Here's MakeMKV after completing the disk analysis of The Hobbit: The Battle fo the Five Armies. The purpose of this example is to show how, while MakeMKV just names segments _t00, _t01 ... _tN, more understanding is possible by opening the little triangles next to the titles. There you'll see information like this. I make some observations:

  1. Opening the longest title (in terms of file size) shows me, for example, a list of languages.
    1. This tends to confirm that this title/file is the one that I will transcode the movie from.
    2. It shows me the subtitle languages I can choose to include when I transcode using Handbrake.
  2. Other, smaller titles are not what I want to spend time ripping.
  3. By looking at the details of other titles, I might be able to intuit additional information.

Copy protection

Here's MakeMKV trying to get around copy protection. Copy protection is somewhat rare in my observation. I've only found a few titles that attempt it although I haven't played close attention. I ordinarily use Handbrake so when it happens, I find out and resort to MakeMKV, then I don't pay close attention to what MakeMKV has to do unless it takes a long time.

In the meantime, here's a list of title I've found copy-protected:

S'up with what's on this disk?

And sometimes, what you're seeing isn't copy protection at all. It's just that you don't understand the split-up of the segments. For example, ripping Broadchurch, disk one, I see:

~/Videos $ ll BROADCHURCH_S1D1
total 11444948
drwxr-xr-x 2 russ russ       4096 Mar 30 18:41 .
drwxr-xr-x 9 russ russ       4096 Mar 30 16:57 ..
-rw-r--r-- 1 russ russ  100843251 Mar 30 16:55 title00.mkv
-rw-r--r-- 1 russ russ 6722056447 Mar 30 16:58 title01.mkv
-rw-r--r-- 1 russ russ 2252395616 Mar 30 18:08 title02.mkv
-rw-r--r-- 1 russ russ 2238489343 Mar 30 18:41 title03.mkv
-rw-r--r-- 1 russ russ 2231165253 Mar 30 19:18 title04.mkv

...when there are only 3 episodes on the disk? What's going on is this:

  1. title00.mkv is tiny: it's something to do with the disc menu video.
  2. title01.mkv is huge compared to the rest: it's a concatenation of all three episodes.
  3. title02.mkv is Episode 1.
  4. title03.mkv is Episode 2.
  5. title04.mkv is Episode 3.





Random notes to be organized later...

Won't eject manually or under software (Nautilus).
(This stopped being a problem, manually, and I began to be able to reuse the drive without rebooting it. Ubuntu updates?) http://forum.kodi.tv/showthread.php?tid=130309
http://askubuntu.com/questions/tagged/eject
http://www.makemkv.com/forum2/viewtopic.php?f=4&t=5384
http://www.makemkv.com/forum2/viewtopic.php?f=4&t=2403

MKVToolNix

https://www.bunkus.org/videotools/mkvtoolnix/downloads.html

~/Downloads $ wget -q -O - https://www.bunkus.org/gpg-pub-moritzbunkus.txt | sudo apt-key add -

~/Downloads $ cat mkvtoolnix.list
# Debian jessie goes with Mint 17.
deb http://www.bunkus.org/debian/jessie/ ./
deb-src http://www.bunkus.org/debian/jessie/ ./

~/Downloads $ sudo apt-get update
~/Downloads $ sudo apt-get install mkvtoolnix mkvtoolnix-gui
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 mkvtoolnix : Depends: libstdc++6 (>= 4.9) but 4.8.4-2ubuntu1~14.04 is to be installed
 mkvtoolnix-gui : Depends: libqt5core5a (>= 5.3.0) but 5.2.1+dfsg-1ubuntu14.3 is to be installed
                  Depends: libqt5gui5 (>= 5.3.0) but 5.2.1+dfsg-1ubuntu14.3 is to be installed
                  Depends: libqt5widgets5 (>= 5.3.0) but 5.2.1+dfsg-1ubuntu14.3 is to be installed
                  Depends: libstdc++6 (>= 4.9) but 4.8.4-2ubuntu1~14.04 is to be installed
                  Depends: libwxbase3.0-0 (>= 3.0.2) but it is not going to be installed
                  Depends: libwxgtk3.0-0 (>= 3.0.2) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.