Since the late 1990's I have been given or bought about 200 DVDs and Blu-ray disks. For awhile they occupied shelf space in the media room, but with the convergence of computers, smart phones, tablets, and televisions, I decided to rip all the titles into a format which could be stored on a network attached storage device (NAS) and then streamed to any device capable of playing the title. Such a project requires some planning and some hardware and some software. There are a great many guides and how-tos published on the internet describing different techniques for accomplishing this task, but I wanted to summarize how I have approached this project and describe the hardware and software used. This guide is slanted toward Apple computers and macOS Sierra. I have been a big fan of open source and free software since my Linux days, so whenever possible I will turn to free software (as the reader will see, that is not always possible). I will also try to use utilities already present in macOS (technically though, you did pay for those when you bought the Mac). Given my Linux background this guide assumes the reader is comfortable issuing commands from the command line - if not, tread carefully.
First off you will need a DVD or Blu-ray reader which you can connect to your Apple computer. If your computer does not have an internal DVD/Blu-ray drive (and face it, most Macs have not had them since 2013), do a little searching on the web and you will find lots of external drives which can be connected via USB. I ended up buying a Blu-ray disk reader which also reads (and writes, though that is irrelevant to this project) DVDs. By default when a DVD is inserted, macOS automatically mounts the DVD as a volume and launches the DVD Player application which goes into full-screen mode. Press the esc-key to leave full-screen mode and press the command-q key combination to quit the DVD Player. When a Blu-ray disk is inserted, the disk is mounted as a volume, but no player starts since there is no native macOS Blu-ray player application (at least not one that Apple supplies with macOS Sierra).
Everyone has their own preferred workflow, and I am no exception. I prefer to make a copy of each DVD on the computer's hard-disk drive. Since I have only one DVD/Blu-ray drive, I can only work with one DVD/Blu-ray disk at a time. However, some software can work with multiple disks at the same time (for example the ripper Handbrake to be explained later). If multiple DVDs are stored as images on the hard-disk, I overcome the one drive limitation. On the other hand I do not make images from Blu-ray disks due to their size (25-50GBs), though as hard-disk drive capacities increase in the future, this will be less of an issue. While I'm no lawyer, I think I'm on safe legal ground as long as I do not create physical copies of DVDs or Blu-rays and do not share these disk images with anyone else. Both of the DVD rippers mentioned later can work with a DVD disk directly, so creating an image of the DVD is not strictly necessary. Once the conversion to an MP4 file is completed the disk images can be deleted.
Creating a Disk Image from a DVD
To make a disk image of a DVD (which for a typical movie will occupy between 4 and 8GB) you can issue the following commands from the command line in the Terminal application. Assuming the Terminal is open and active, first check to see which device is associated with the DVD.
bob$ diskutil list /dev/disk3 (external, physical): #: TYPE NAME SIZE IDENTIFIER 0: SOPRANOS_S1_D3 *8.2 GB disk3 bob$
The "diskutil list" command reveals that the DVD (in this case the third disk of the first season of The Sopranos) is mounted as device "/dev/disk3". Before this disk can be copied it must be unmounted (but not ejected). Again in the Terminal issue the following command.
bob$ diskutil unmount /dev/disk3 Volume SOPRANOS_S1_D3 on disk3 unmounted bob$
bob$ dd if=/dev/disk3 of=The\ Sopranos\ S01D03.iso bs=1m 7411+1 records in 7411+1 records out 7771576320 bytes transferred in 2486.554478 secs (3125440 bytes/sec) bob$
The command "dd" is a very old UNIX command used for copying data from a source to a destination. Note that the output file name "The Sopranos S01D03.iso" has its spaces escaped with backslashes so that the spaces will not be parsed as separate arguments to the dd command. It is a fairly bare bones command and doesn't do much error checking, so if your DVD is dirty, damaged, or scratched this command may fail with an error message. Later I will discuss a commercial software solution which sometimes works on such disks. This command can take from 20-60 minutes to complete, largely dependent on the read speed of the DVD drive. Once the command completes, the DVD can be ejected.
bob$ diskutil eject /dev/disk3 Disk /dev/disk3 ejected bob$
This process can be repeated for as many DVDs as you need to copy.
Creating a MP4 file of a Movie DVD
I typically use one of two applications for this purpose. Handbrake is a free application which is fairly easy to use and can queue several DVDs or DVD disk images to be processed serially. My alternative application (not free) is MacX DVD Ripper Pro. Rather than explaining the two applications here, I refer the reader to the home pages for these two applications. In general Handbrake is the faster converter for me (typically processing 100+ frames per second). By contrast MacX DVD Ripper Pro is very slow, almost never able to process video in real time (in other words slower than 24 frames per second). Why have two applications which do the same thing? Occasionally I run across a dirty or scratched DVD which the command "dd" cannot copy or the copy has an error in it which causes Handbrake to fail and output a truncated file. For these difficult cases, I find the error correction software in MacX DVD Ripper Pro is usually able to render a useful MP4 file or disk image, though it may take overnight to complete.
Creating MP4 files of Television Shows
Usually a DVD pack for a season of a TV show will contain two or more disks and each disk may contain two or more episodes of the TV show. Even though it is slower, I prefer to use MacX DVD Ripper Pro for ripping TV shows since its user interface allows you to easily see which tracks on the DVD contain episodes (an hour-long drama will be a 50-52 minute track while a half-hour situation comedy will be a 19-21 minute track). Handbrake can do this too, I just find it more difficult to select the tracks I want in Handbrake.
Creating MP4 files of Movie or TV Show Blu-rays
The process I use for Blu-ray disks is a little different and more frustrating. As mentioned earlier Blu-rays typically contain so much data, that I do not make disk images of them. MacX DVD Ripper Pro will not take a Blu-ray disk as input, which leaves Handbrake which likewise does not directly access Blu-ray disks. However there is an article which describes how to get Handbrake to rip Blu-ray disks if you have another free media player (VLC) installed. Instead my preference is to copy some (but usually not all) of the tracks off of a Blu-ray disk and save the information in a MKV container on the computer's hard drive. The software I use to accomplish this is MakeMKV. While this application has a hard job to do and does it well, I have a few complaints about it. First, its user interface is not as polished and Mac-like as MacX DVD Ripper Pro or Handbrake. This is probably due to the fact that the application was originally developed for Windows (or possibly Linux) and then ported to macOS and the UI was kept (nearly) the same. My second complaint is that the application purports to be free while in beta-testing or you can pay $50US to own the application (and receive free lifetime upgrades) and support the developer. What I found when trying to use the free beta, is that the application would refuse to run saying that it was too old or the application key had expired. A little internet searching can find the latest beta software key and even more searching will reveal where to store the key; however, the keys expire monthly. Thus unless you plan on using MakeMKV frequently, plan on installing a new key almost every time you want to rip a Blu-ray disk. Even when you have a valid key, sometimes the application refuses to run unless you download the latest version. What's a person to do? Pay the $50 and support the developer and forget about expiring software keys.
Long story short, use MakeMKV to copy the desired tracks off a Blu-ray disk and then use Handbrake to convert this file to a playable MP4 file.
Streaming Stored Content in the macOS/iOS Ecosystem
This section describes an optional piece of hardware. If you have a computer with a large hard drive and don't mind leaving the computer on and connected to the internet all the time, you will not need as network attached storage device. Just download the free Plex media server software and configure it. The Plex server software will serve up video, audio, and image files to the Plex client application which is available for all the recent macOS and iOS devices. With some extra effort, the Plex client application can even be installed on legacy Apple devices (Google is your friend). If you have an older computer sitting around and a USB-connected external drive, this can make a capable media server using Plex.
I wanted something a little neater because I have been down the road of a little Intel Atom-powered box with multiple octopus-like tentacles of external USB drives. The most frustrating thing became finding enough outlets to plug in all the AC adapters (why is it that an 8-outlet power strip can only fit two wall warts?). Moving all the devices from one room to the next or one house to the next was a headache too. I decided I wanted an all-in-one box, a network attached storage device. These are basically small computers (mine is still based on a quad core Intel Atom processor) running some flavor of Linux (usually) with multiple bays for installing hard drives (or solid state drives if you are rich). I bought an 8-bay model capable of running the Plex server application and other similar media servers. I loaded it up with four 8TB drives configured as a RAID-5 array. One power cord, one ethernet cable, and everything works fine. I have streamed video, audio, and photos to my smartphone, laptop, and desktop. This setup even allowed me to watch a movie on my smartphone connected to WiFi in Europe.