MakeMKV on Linux |
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).
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
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
~ # 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
~/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
~/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/
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
(After the first couple of times, I stopped even trying to do this. It doesn't seem to make any difference. I haven't done this for years of use now.)
~/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
For some DVDs, you must configure MakeMKV to point to a binary, ccextractor (closed-captions extractor). It's something you must build yourself. You'll know you need this when you see an error in MakeMKV as it's first reading the disk:
Unable to execute external program 'ccextractor' as its path is not set in preferences
Follow these instructions (Debian/Ubuntu/Mint):
# apt-get install libtesseract-dev libleptonica-dev
~/Downloads/makemkv$ git clone https://github.com/CCExtractor/ccextractor ~/Downloads/makemkv$ cd ccextractor/linux ~/Downloads/makemkv/ccextractor/linux$ ./build Running pre-build script... Obtaining Git commit Storing variables in file Commit: 2bcd993c0f9ba97fe33f5bdb43d4596b9b927fa3 Date: 2019-08-22 Stored all in compile_info_real.h Done. Trying to compile... (If you failed to install all the tools including the noted additional ones in the step above, you'll get an error here saying what you're missing.) Compilation successful, no compiler messages.
This bit is confusing and probably should be the object of greater scrutiny. Also, these instructions do date back some 6 years and I have never repeated them. I suggest that you ignore them.
~/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...)
Didn't get this far, so I decided to take a look around.
(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).
I finally paid my $50 when it appeared I could no longer arrange for the software to work. I had decided it was well worth the money and I wanted to contribute anyway.
On occasion, I have not been able to follow the usual instructions to File → Open disk → and see:
...and so I'm obliged to follow the instructions given here: MakeMKV: Manual DVD mode. You'll need to be very analytical about the Title selection string syntax, experimenting with this specification until you get the result you need, but it worked for me. I frequently got more than I wanted or the wrong thing and needed to discard some of it later, but it did work.
Why the disk was laid down unable to support MakeMKV's usual enumeration is a puzzle. This is very rare (has happened to me only once in over a decade of use). However, I'm glad this "low-level" option is available. I wish I had recorded (documented) my successful use, but I thought I'd be able to figure it out if ever it happened again.
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.
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:
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.
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.
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 russ@tol-eressea:/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.
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.
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:
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:
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:
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:
Error 'Posix error - Input/output error' occurred while reading
According to MakeMKV's author...
Such errors are the operating system saying the disk drive stopped talking to it. Why did it stop talking? That is the key: MakeMKV can't do much without the drive responding.
Things to try...
(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
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.
Handbrake: $ add-apt-repository ppa:stebbins/handbrake-releases $ apt-get update $ apt-get install handbrake-gtk $ apt-get install handbrake-cli MakeMKV: $ apt-get install build-essential pkg-config libc6-dev libssl-dev libexpat1-dev libavcodec-dev libgl1-mesa-dev qtbase5-dev $ ./configure ccextractor: $ git clone https://github.com/CCExtractor/ccextractor $ cd ccextractor/linux $ ./build $ sudo apt-get install libtesseract-dev $ cd ~/.MakeMKV $ gvim settings.conf # add this line: app_ccextractor = "/home/russ/Downloads/makemkv/ccextractor/linux/ccextractor"