Side note. Don’t use hardware acceleration with TDARR. You will get much better encodes with software encoding, which is great for archival and saving storage.
Use hardware acceleration with Jellyfin for transcoding code on the fly for a client that needs it.
If you know what your client specs are, you can use TDARR to reencode everything to what they need and then you won’t have to transcode anything with Jellyfin.
I generally think that for storage/archiving you should use CPU encoding and only use GPU for things like transcoding where real-time results are crucial.
GPU encoding is a lot worse quality than CPU, and you can’t change the settings to what you want. Better to just accept the extra time requirement to get a better result.
I like the interface of Airsonic, but it looks like it hasn’t been updated in 4 years, and Airsonic-advanced hasn’t had any action since February of last year for the experimental branch or 2020 for the stable branch.
What do people use? I tried Navidrome a while back and wasn’t happy for some reason. Should I try it again?
Tdarr is great if you are comfortable setting up a Docker environment. It is a great way to reprocess your whole library.
A good GUI alternative is Handbrake. It uses a different library than ffmpeg but can do the same stuff. One thing about Handbrake to remember is that it is centered around video encoding. So while ffmpeg can process your audio streams without touching the video stream, Handbrake will reencode video every time.
The problem most of these examples and counter examples make is only showing simple code and assuming that you always want to apply the patterns of abstracting things or not.
This is the real problem. Without context of what the project is for we can only speculate on what the “best practice” is. If my problem is that I have a directory with 2000 videos in it, and I need to process all the ones with an English language track, I am going to write a one-off bash script, and not a huge C# project filled with the OO concepts.
But if the method is one of 10,000 needed in a huge project, then sticking with the coding guidelines of the whole project is more important for maintainability. A dev coming in 36 months later who is familiar with the code base would have less problems going through an abstracted setup, just because they have experience with the project and can make assumptions from that.
The code on the left is more readable. It is easy to follow and see what is happening at each step.
That being said, the code on the right is easier to maintain. If the requirement comes down the pipe that we now need to support a new pizza topping it is easy to jump to the add toppings method using the IDE instead of scanning the entire monolith procedural function. Or if we now need to add support for take-and-bake, we can just modify the small entry method.
This also assumes that we are not needing to reuse any of these methods. If you want to add toppings to a sandwich or a salad, better write another huge method like the one on the left, or add a ton of nested if/else or switch statements. If you use the style on the right you can reuse the add toppings method without worrying about if you should preheat the oven for a salad.
The author chose a very simplistic requirement for an example and it is all well and good until you let it fester in a code base for ten years, with multiple interns maintaining it and end up with a huge spaghetti code monster to deal with.
I can also vouch for VLC to somewhat work, but it is pretty flaky and might need some finesse to work very well.
My experience has been to just rip all the titles using MakeMKV and load the extras into Jellyfin into a /Extras directory. That way I can watch the special features, but I lose the DVD menus, which can sometimes be a good thing with forced previews and FBI warnings and whatnot.
I love my shields, I have both the tube and the pro in different rooms. I like the Jellyfin AndroidTV app more than Kodi. I have side loaded a different launcher to avoid the ads.
I would love to try and replace it, but it needs to be able to handle 4K UHD rips with hdr and the original sound tracks in ATMOS or whatever.