Last night I finally wanted to test my own media center on my Smart TV at home with my family. I recently bought Jellyfin an open source software server solution to get a Netflix-like web interface and play series and movies on it. The special thing is that the server can also run on my Windows laptop and you can watch the individual episodes conveniently via the interface. Of course, you can also search for the individual video files in the Windows file manager, but a Netflix-like interface is somehow more convenient.
But it's not that easy to get this streaming experience out of your own laptop and even for me as an IT specialist, it's questionable why it has to be so difficult to stream.
Problem 1: The firewall
In principle, the firewall is very important because it prevents anyone from accessing the server/computer from the Internet. You can visualize it like this: The firewall is a door, but even if you have a key to get in, someone in the house has to release it first so that you can open the door with this key. I don't know if this analogy fits well, but I can't think of a better one right now.
The firewall is the protective wall, and you should not switch it off. But how can you stream the movie from the server to the client?
Problem 2: Port sharing
Any software that includes a server runs on the localhost, which is the local computer. Depending on the server/software, a different port is used. Jellyfin, for example, uses port 8096 by default. If the server is running, you can access the media center in the browser via localhost:8096 and stream locally in the browser. This works without any problems.
But how can you access the server from outside?
Here comes an important point of view that should be understood: The client requests the server first, not the server delivers to the client.
This is important to understand, because this is how the firewall must be set. The firewall settings refer to "incoming connections", i.e. when a client wants to access the area protected by the firewall from outside in order to reach a service/server there.
In the firewall settings, select "Port" and choose "TCP" as the connection type. Then enter 8096 as the port and in the next step you can give this share a name and a description. With the name "Jellyfin" you can later find out more quickly what this share was for.
Not that difficult, is it? Wrong, it easily took me 30 minutes to see where the setting for this can now be set, as I have never needed the function in the last 10 years, neither with Windows XP, Windows Vista, Windows 7 or Windows 10.
Well, there's a first time for everything.
But I ask myself, does it have to be so difficult? Why is there no way to enable a filter rule for incoming connections in the firewall directly via Jellyfin? A kind of API interface to the system that even a layman doesn't have to search for? Unfortunately, there isn't.
Now I could at least stream within my home network with what I had now realized. However, it is not yet possible to stream to the Internet because of the layer structure.
Here is a simple explanation:
- localhost:8096 - is the local system
- 127.0.0.1:8096 - is the same as localhost, depending on the application what you should enter to access it differs
- 192.168.178.XX:8096 - is the IP address of the router, this should actually be similar for everyone, this is the home network. The numbers at the end, which I have marked with an XX, are assigned depending on the number of clients in the home network. After the firewall has the release on the computer to allow incoming connections on port 8096, the server can now be accessed with this IP address and the port, for example 192.168.178.XX:8096 within the WLAN network, this works from the smartphone via Jellyfin's own app in the Google Play Store (I don't know for Apple/iOS right now) and also on the Smart TV (here comes the next problem).
- XX.XX.XX.XX - the public IP is available to everyone on the Internet and can be displayed on various websites. In order to be able to stream via this public IP, the WLAN router that connects the clients in the home network to the Internet must be given a separate port release so that the server can be accessed from outside with a port. I had already tested this at my home and it actually worked well, so I was able to access my media center with my smartphone via the mobile network using my public IP and the port that I have shared with my WLAN router, but it was only a test and is closed again. I will therefore not go into this point any further.
Problem 3: Smart TV
Very many, if not the majority (right?) in Germany have a smart TV, my family only got one a few months ago after the plasma TV that had lasted and worked for a good 20 years, the remote control from the satellite receiver was simply no longer usable and the smart TV no longer needed all that, as well as having Netflix and co in it, plus a full HD 1080p picture, the old plasma TV "only" had HD 720p, but in everyday life you hardly noticed a difference anyway, and now you are already used to the new smart TV.
The Smart TV was the target, because now that I could access my media center within the network, I thought that it wouldn't be that difficult to install Jellyfin on the Smart TV. Well, I was wrong. This is a Samsung Smart TV, which has various apps, even games, but no real app store like Android, where you could simply install an app of your choice. So the search didn't help.
I then tried to type it in laboriously in the web browser with the remote control, not nice if you don't have a voice function remote control. The web browser at least tried to load the Jellyfin login screen, but it couldn't process it and I couldn't access the media center via it either.
How are you supposed to transfer content to the TV wirelessly?
Problem 4: DLNA
One function that exists is called DLNASimply put, this allows you to share content on different devices, provided they have implemented the DLNA standard correctly. So I looked for DLNA in the administrator administration web interface of Jellyfin and quickly found what I was looking for: you need to install a plugin from Jellyfin and restart the server. Well, why such an important function should be outsourced as a plugin is not clear to me, but said, done, plugin installed, server restarted.
Now I could see the DLNA sharing icon at the top right of the user interface, if you click on it, all devices to which you could share the content were displayed, including the Smart TV.
Problem 5: Marketing different names
So I selected the Smart TV and was full of expectation that it would now work, that my Jellyfin server would be running and I could watch the movie on the TV. Unfortunately, that didn't work, because while Jellyfin said that the connection had been established and I could only disconnect it again, nothing showed up on the Smart TV.
I then searched for input source to find the signal, which is this button where you can choose between TV and HDMI etc. I found the "Screen Mirroring" function. There I found the function "Screen Mirroring", and here we come to the next point, marketing, since DLNA probably sounds too bulky for the normal consumer, it must be something hip and easy to understand, so Screen Mirroring seems to be that, but, is Screen Mirroring the same as DLNA?
Or is this just a simplified implementation? Is DLNA not fully supported? I'm racking my brain and thinking about the possibility of screen sharing for mobile devices on my Xiaomi smartphone, maybe that works?
I go into the settings and go to the menu item "Connection and sharing" and far down in the "Other" section, I see "WLAN display" with the description "Connect wirelessly to a screen". I can only shake my head, every company describes it differently, how is the customer who wants to use it supposed to know whether it is compatible at all?
Problem 6: Display remains switched on
Now that I had managed to connect my smartphone screen to the smart TV screen mirroring mode via the WLAN display, I was finally able to watch my movie via the Jellyfin app on my smartphone, which is connected to the server on my laptop. Unfortunately, screen mirroring only works when the screen is switched on, even though the player is playing the movie in the foreground.
So I had to leave the smartphone on the charging cable, which ironically was next to the TV and I had to get up to pause the movie or resume playback.
Summary: Streaming with obstacles
In order for me to wirelessly stream a movie from my laptop to the Smart TV, I need port sharing in the Windows Firewall, then I need DLNA enabled to stream within the network, then I needed the Jellyfin app on the smartphone to access the server content and had to share my smartphone screen to the Smart TV so I can watch my movie while my smartphone display was on all the time.
Yes, plug and pray. It's unbelievable that in 2024 we have such problems correctly applying a standard that simply works, why can't I stream from my laptop to a TV without any problems? Or why can't I install my own apps on a Smart TV?
Why is it easier, and also less time-consuming, to simply use an HDMI cable to connect the laptop directly to the TV and then watch the movie? Apart from both cases, I was never able to control the Jellyfin content with the TV remote control anyway, so no matter whether I played the movie via smartphone or connected the laptop via HDMI, I always had to get up anyway.
Why? Why don't we have working and reliable solutions in 2024 that don't make it difficult to stream a movie from a laptop to a smart TV?
Have I forgotten something? Is there already another standard that I am not aware of?