Video Feed Player

I have a new application to offer and as with most of my applications, it was created because I couldn't find anything that meets my needs. I have a bunch of digitized home movies and various other videos that I want to be able to watch on my AppleTV.

There are lots of solutions for this problem, but they all require running a heavy media server (Plex), uploading everything to OneDrive or Google Drive (Infuse), or using a very complicated playlist schema (VLC).

I wanted a flexible player that used a very simple content schema. The end result is my new Video Feed Player application.

The App

Once you first open the application you are prompted for a URL. This URL should be for a JSON file available to your AppleTV. You can find the schema below. The feed defines a list of video groups. Each group is given a title and a category. Each group contains a list of videos, each with a title, url, and optional thumbnail.

The category determines which tab the video group is will appear in. The application just sees this as a string, so you can set the categories to whatever you like. For example, you could use Home Video, TV Show, and Movie. Each video group is then displayed vertically on each tab page with the video group title above the list of videos. These videos are then displayed in a scrolling horizontal list. Each video displays the title of the video below it and the image displayed for the video is either the provided thumbnail or the default placeholder image. When the video tile is clicked, the video URL is then passed to the video player.

Video Feed Player Gallery

Apple App Store Image

The Feed

Since the feed is so simple, serving this file to the player can be as simple as making the JSON file and media available on your local network over HTTP. You could also, for example, deploy a simple node express application to Google Cloud Run and use that to enumerate content on a Cloud Storage Bucket and make the content available to your AppleTV. The way you serve your content is up to you.

Feed Schema

Below is the formal schema for the video feed the player expects.

{
	"$schema": "http://json-schema.org/draft-04/schema#",
	"type": "array",
	"items": [
	  {
		"type": "object",
		"properties": {
		  "name": {
			"type": "string"
		  },
		  "category": {
			"type": "string"
		  },
		  "videos": {
			"type": "array",
			"items": [
			  {
				"type": "object",
				"properties": {
				  "name": {
					"type": "string"
				  },
				  "url": {
					"type": "string"
				  },
				  "thumbnail": {
					"type": "string"
				  }
				},
				"required": [
				  "name",
				  "url"
				]
			  }
			]
		  }
		},
		"required": [
		  "name",
		  "category",
		  "videos"
		]
	  }
	]
  }

Feed Example

This is an example video feed. The URL and thumbnail values are just placeholders.

[
    {
        "name": "Video Group 1",
        "category": "Category 1",
        "videos": [
            {
                "name": "Demo Video 1",
                "url": "https://domain.tld/video-1.mp4",
                "thumbnail": "https://domain.tld/example.jpg"
            }
        ]
    },
    {
        "name": "Video Group 2",
        "category": "Category 2",
        "videos": [
            {
                "name": "Demo Video 2",
                "url": "https://domain.tld/video-2.mp4",
                "thumbnail": null
            }
        ]
    }
]

Pricing

Since the application is for a niche audience, and it's a one-time purchase, I priced the application at around $6 depending on the country. I use this application myself so expect regular maintenance updates to ensure it continues to work.

Support

If you run into any issues, please fill out my contact form and let me know. The application is fairly simple and very cleanly written, so any bugs should be easy for me to find and fix.