2025 was a busy year for my family. My daughter and my wife traveled the whole country to contest chess championships. And I also traveled alone a couple of times. We bought a DJI Pocket 3 so my wife can take as many moments of our daughter as possible. We planed to also make vlogs out of it. But the plan was just a plan. We didn’t have so much time to edit all those videos. And the amount of videos just piped up as our daughter keeps contesting more and more tournaments.
Soon, the laptop storage is no longer enough for those 4K videos my wife has taken. So I decided to relocate them to my HDD on the old PC. But I don’t want to put them in the corner and never look back. I want my wife can easily access them without any hassle. And I found Jellyfin, a free media system allows me to self-host. Setting it up was easy and straight forward. I just wrapped the installation script and ran it on my PC. Add a nginx configuration to access to it with HTTPS. BAM! It just works.
But when I played some videos, I noticed the video is subtle even on home network.
-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------
Accepted connection from 192.168.1.162, port 39962
[ 5] local 192.168.1.24 port 5201 connected to 192.168.1.162 port 39978
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 1.00 MBytes 8.38 Mbits/sec
[ 5] 1.00-2.00 sec 1.12 MBytes 9.44 Mbits/sec
[ 5] 2.00-3.00 sec 1.12 MBytes 9.44 Mbits/sec
[ 5] 3.00-4.00 sec 1.12 MBytes 9.44 Mbits/sec
[ 5] 4.00-5.00 sec 1.12 MBytes 9.44 Mbits/sec
[ 5] 5.00-6.00 sec 1.12 MBytes 9.44 Mbits/sec
[ 5] 6.00-7.00 sec 896 KBytes 7.34 Mbits/sec
[ 5] 7.00-8.00 sec 1.00 MBytes 8.39 Mbits/sec
[ 5] 8.00-9.00 sec 1.12 MBytes 9.44 Mbits/sec
[ 5] 9.00-10.00 sec 1.12 MBytes 9.44 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.03 sec 10.8 MBytes 8.99 Mbits/sec receiver
-----------------------------------------------------------
I tested the network speed and it seems not as fast as I expected. I use a coper cable I found in my bag of abandoned stuffs. I unplugged and unrolled the cable and test again, hoped that I don’t have to buy a new one.
Connecting to host 192.168.1.24, port 5201
[ 5] local 192.168.1.162 port 56958 connected to 192.168.1.24 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 96.1 MBytes 805 Mbits/sec 0 1.94 MBytes
[ 5] 1.00-2.00 sec 98.9 MBytes 829 Mbits/sec 0 1.94 MBytes
[ 5] 2.00-3.00 sec 104 MBytes 877 Mbits/sec 0 1.94 MBytes
[ 5] 3.00-4.00 sec 98.6 MBytes 827 Mbits/sec 0 1.94 MBytes
[ 5] 4.00-5.00 sec 104 MBytes 874 Mbits/sec 0 1.94 MBytes
[ 5] 5.00-6.00 sec 102 MBytes 854 Mbits/sec 0 1.94 MBytes
[ 5] 6.00-7.00 sec 103 MBytes 867 Mbits/sec 0 1.94 MBytes
[ 5] 7.00-8.00 sec 102 MBytes 852 Mbits/sec 0 1.94 MBytes
[ 5] 8.00-9.00 sec 103 MBytes 863 Mbits/sec 0 1.94 MBytes
[ 5] 9.00-10.00 sec 101 MBytes 845 Mbits/sec 0 1.94 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 1016 MBytes 852 Mbits/sec 0 sender
[ 5] 0.00-10.01 sec 1014 MBytes 850 Mbits/sec receiver
That’s much better. Almost a Gbits/s. And now I can watch my videos smoothly.
Playback Info
Player Html Video Player
Play method Transcoding
Protocol https
Stream type HLS
Video Info
Player dimensions 1921x1003
Video resolution 2688x1512
Dropped frames 0
Corrupted frames 0
Transcoding Info
Video codec H264
Audio codec AAC (direct)
Audio channels 2
Bitrate 47.1 Mbps
Transcoding progress 16.3%
Transcoding framerate 32 fps (1.07x)
Reason for transcoding The video codec is not supported
Original Media Info
Container mov
Size 1.3 GiB
Bitrate 49.7 Mbps
Video codec HEVC Main 10
Video bitrate 46.8 Mbps
Video range type SDR
Audio codec AAC LC
Audio bitrate 317 kbps
Audio channels 2
Audio sample rate 48000 Hz
But it didn’t end here. I realized some of videos still subtle. They are
3840x2160 HEVC SDR videos, that current Chrome on Arch doesn’t supports. My PC
has AMD Ryzen 5 1600 CPU, which is old and probably not the best at transcoding
videos to lower resolution format. My AMD GPU is also old, and 4K video is out
of dimensions range to use accelerated hardware transcoding.
I did a quick check on Youtube 4K videos, and saw the videos that I received
have vp09 codec. Maybe if I really want to watch my videos in 4K on Jellyfin,
I have to transcode those videos to this format using a background job. Or even
convert 2K and 4K videos to HD to watch on phones. Because my phone can watch
those videos in original codec just fine. I will come back to this problem as
it requires redesigning the system.
In the mean time, I find an other interesting problem to look into. My current https setup is self-signed, and it problematic to open the Jellyfin website.