Overview
I have three kids and three grandkids, So, I have a crazy number of home videos. Depending on the recording device, the videos are in a variety of formats or file types, and they are stored on many different computers.
I don't want to spend any time converting file types. And it would be nice if my family or guests could just watch without me getting involved.
Traditional media servers are designed to play professionally produced movies that are "ripped" from DVDs. Professional movies have a lot of meta data that can be pulled into a Media Server. My home videos do not have meta data. Media Servers tend to have complicated user interfaces. Ideally, guests in my home can watch my family's videos without any help from me.
Requirements
For the Guest Experience:
Ease of Use:
User-friendly intuitive, interface with clear navigation using folders and filenames.
NOTE: This solution does not meet this requirement. A user must know to go to Universal Plug'n'Play, click on video-server and then wait for the folder and video to synch.
The client must run on a FireTV or a FireTV Cube
Navigate using FireTV remote.
Connection and Accessibility:
The client app must automatically discover the video server on the local network.
NOTE: I tried several Media Servers, Clients and NAS before getting emby and VLC to work reliably over time and after reboots.
Ability to browse and play videos without requiring login credentials.
No need to manually enter IP addresses or server names.
Playback Capabilities:
Support for a wide range of video formats (e.g., MP4, MOV, AVI) from iPhones and camcorders without conversion.
Ability to resume playback from the last watched position.
Provide basic playback controls (play, pause, rewind, fast forward).
For the Video Server:
Compatibility and Reliability:
Video-Server software must be compatible with a FireTV client.
Open-source and free software.
Ensure the server software runs on a headless Ubuntu LTS 24.04. (You can use any OS for the server. I want to use Ubuntu)
NOTE: headless means there is no keyboard, mouse, GUI or monitor on the server. Server management is via a terminal window and ssh.
Setup and Maintenance:
Simplified setup process with detailed documentation.
Ability to automatically update the server software and libraries.
Option to back up and restore the media library.
Organizational Features:
Home videos have no metadata, so fetching thumbnails, descriptions, etc. is not required.
Support for organizing videos into categories or playlists.
Security and Privacy:
Ensure secure access to the server (e.g., HTTPS).
Admin can restrict accessing and viewing selected videos or directories.
Web Videos (Secondary Requirement):
Support for integrating videos from web sources (Amazon Photos, Google Drive, and Photo Circle) within the app.
Allow users to seamlessly switch between local and web-based videos.
Client - Server Model
Because I want to use TVs as the primary user interface, I need a client that runs on the TV and automatically connects to the server.
Step 1. Create a Video Server using Ubuntu LTS 24.04 with a Headless Install
The ubuntu video server will go in a utility room with my router, switches and other headless servers. Headless servers don't need a mouse, keyboard or monitor. They are accessed, configured and maintained through a MacBook using ssh and a terminal window.
Step 1.A. Follow these ubuntu install directions
NOTE: I named my server video-server and not TVheaddend
Skip Step 8. For TVheadend, Disable IPv6
Skip Access by name
Record the ♣username♣ and ♣password♣
Step 1.B. Remove monitor, keyboard, mouse and USB
This is a headless server (i.e., no GUI), which will be access from a PC or MacBook using a terminal window and SSH
Step 1.C. Simple Checks
The video server should be working. Here are some checks:
Open a terminal window on a MacBook and run one or both of the commands:
$ ping video-server.local
PING video-server.local (192.168.0.170): 56 data bytes
64 bytes from 192.168.0.170: icmp_seq=0 ttl=64 time=10.458 ms
$ ssh ♣username♣@video-server.local
Step 1.D. Other commands
The video server should be working. Here are some checks:
Use the terminal window in 1.C and run the commands:
$ sudo apt install ubuntu-restricted-extras
$ sudo apt install net-tools
$ sudo systemctl set-default multi-user.target
Step 1.E. Uncomplicated Firewall
This is probably an insecure way to do it, but I have multiple TVs and laptops on the LAN. These commands enable ufw and opening the video-server to any local IP address. The LAN's router blocks all incoming connections. Run these commands:
$ sudo ufw enable
$ sudo ufw allow from 192.168.0.0/24
NOTE: apt is preferred over apt-get.
Step 1.F. Set Static IP Address for video-server [optional]
I like static IP Addresses for shared devices (router, FireTV Recast) like this video-server. This is an optional step.
Add static IP to router 192.168.0.170
Setting a static IP depends on your router or gateway. I found my manual and followed its direction to set a DHCP Reservation for the video-server.
To set a static IP Address, you'll need the interface and MAC address. Run this command to get the info:
$ ip a
...
2: enp27s0: ...
link/ether <MAC-ADDRESS> brd ff:ff:ff:ff:ff:ff
Step 2. Install VLC on MacBook
VLC runs on a MacBook. A MacBook's VLC can be used as a check to see if the video-server and VLC are connecting automatically.
Step 2.A Install or update brew
homebrew is a utility for installing applications that are not in the app store, such as VLC.
On the MacBook, open a terminal window, and enter the following commands:
$ git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow
NOTE: The above command takes a *very* long time and doesn’t output anything. Be patient!
$ brew update
NOTE: This also takes awhile without any output
Step 2.B Install VLC on MacBook OS X (Sequoia 15.2)
My VLC version was a few years old. So, I needed to reinstall it.
On the MacBook, remove VLC app from the dock and move VLC from Applications folder to trash.
Open a terminal window, and run the commands:
$ brew install vlc
$ vlc - -version
NOTE: there shouldn't be a space between the dashes above. Two dashes in a row, creates one character.
NOTE: the output of the above command should be something like:
VLC media player 3.0.21 Vetinari …
From a Finder window, go to Applications, and open VLC,
select options and click Keep in Dock
VLC > Settings and then select Show All
Playlist > Services discovery
UPnP should be set to Auto
Step 3. Add emby on video-server
Emby is a media server that automatically converts and streams your media on-the-fly to play on any device. Emby connects automatically to VLC. Emby is DLNA and UPnP compliant. The connection remains stable through reboots or either the server or the client.
Step 3.A Download latest version of emby to MacBook
On MacBook Download emby from https://emby.media/linux-server.html.
emby-server-deb_4.8.10.0_amd64.deb is downloaded on the MacBook to Downloads
Step 3.B Copy emby package to video-server
On a MacBook, open a terminal window, and enter the following commands to copy the file to the video-server:
$ cd Downloads
$ scp emby-server-deb_4.8.10.0_amd64.deb ♣username♣@video-server.local:/home♣username♣/.
Step 3.C Install emby on video-server
On a MacBook open a terminal window and run the following commands:
$ ssh ♣username♣@video-server.local
$ sudo apt update && sudo apt upgrade
$ sudo dpkg -i emby-server-deb_4.8.10.0_amd64.deb
$ rm *.deb
Step 3.D Setup emby on video-server
On a MacBook open a browser and go to http://localhost:8096
Set up emby
Step 3.E Reboot video-server to complete emby setup
In the terminal window of 3.C, run the command:
$ sudo reboot now
Step 3.F Check
Open a browser and enter:
http://video-server.local:8096/
Step 4. Add videos to video-server
The whole point of this project is to store videos in a central location that is accessible from anywhere in my house. So, we need to create a directory on the video-server, move video files to it, and then ensure emby and VLC can see those files.
Step 4.A Make a central directory for videos on the video-server
In the terminal window of 3.C, login using ssh and run the command:
$ mkdir /srv/Videos
Step 4.B Add home videos to video-server
I created a directory structure under /srv/Videos, which is something like: /srv/Videos/<me>, ... <wife>, ... <son>. Under each of my kids, I added folders (mkdir) for their kids and spouse.
Copy files into folders. Open a terminal window on MacBook, move to a folder with videos using cd command.
In the terminal window of 3.B (not logged into video-server), run the command:
$ ls
Identify the video file types (e.g., .MOV, .mp4), then for each file type run the command:
$ scp *.<filetype> ♣username♣@video-server.local:/srv/Videos<appropriate-subdirectory>.
Step 4.C Let emby know where to look
On the MacBook, open a browser, go to settings > library (http://video-server.local:8096/web/index.html#!/librarysetup)
Add Library: type = Home Videos & Photos, Click on "+Add folder" /srv/Videos.
Step 5. Add VLC on FireTV
To add VLC, I went to the FireTV APP Store and followed the directions. This required adding Downloader, installing VLC, and then moving it to the main menu bar.