Building a Home Cinema App (Part 1)
I have a couple hundred gigabytes of films, TV shows, some historical records, and even videos from the wedding. They are well-organized, and some of this media is backed up to cloud storage.
In addition, the full-scale Russian invasion of Ukraine introduced problems with power and internet outages. Indeed, since 2023 these problems no longer affect our lives as much, but for me, it was enough to start thinking about the project I want to present.
That’s when it hit me: I needed to build my own home theater app.
This article is the first part in a series on this topic. You can find all parts using the link. Once the project is done, it will be published on GitHub so everyone can access it.
Just Another Wheel
To answer your question: yes, home cinema applications already exist. Many have free versions, and you can find hundreds of them — from simple tools to full-featured platforms. I did some research and found a few projects that are doing exactly what we're planning. If you're interested, here's a good starting point for your journey.
But the main purpose of this project is to gain new knowledge. So yes, we’ll build a new project from scratch — even if nobody else needs it.
The Concept
The initial idea was to utilize AirPlay functionality, which can cast video from a phone to a TV:

The iPhone will use a browser to open a web page with the cinema app (a web app) hosted on a PC. Using the app, the user can choose a video they want to watch, start it, and cast it to the TV using AirPlay. I have Tizen OS (Samsung's OS) based TVs that support AirPlay, so compatibility won’t be an issue.

Let’s dig deeper.
The app needs a front end to display videos and provide navigation between media files. Another essential component is the back end, which will store data, serve media files, and supply necessary information to the front end.
Again, this app is being built for just a few people, so we can ignore things like authentication, authorization, and scalability. The goal is to create a simple-as-possible application to serve videos over the LAN.
To simplify things even more, we’re going to minimize communication between the front end and back end by providing pre-rendered pages from the server.
Video Streaming
According to the documentation, there are multiple video codecs available. To keep things simple, we’ll stick with the H.264 codec, which has wide support across browsers and platforms — exactly what we need.
The most common way to convert media is to use ffmpeg. This powerful tool can convert and stream media in real time, and its range of capabilities is enormous.
For this project, we’ll initially focus on converting media to the H.264 codec and storing it alongside the original files. This is our starting point, but we may revise the approach later.
Tech Stack
I didn’t spend too much time choosing the stack. For the Proof of Concept (PoC), you can use whatever suits your needs.
Here’s what I picked:
What's Next?
In the next article, we’ll dive into the actual coding and implementation details of the PoC.