Comments (4)
Not sure whether I'd consider using databases versus config files easier, but that's a matter of opinion. I personally prefer keeping it simple and just using config files but I know many users do prefer to use the command line instead as (like you mentioned) it's usually easier to automate than config files.
As for my code, it would need some clean-up first to be contributable and not sure how useful it would be for others as it includes changes specific to my setup.
For example, I have added some hacks, a couple of which do change the command line:
- Jellyfin sends empty VAAPI device node name to ffmpeg (even though it is set correctly in admin dashboard) which causes transcoding to fail. I have to inject node name from wrapper.
- VAAPI tries to use the iHD driver for Intel VAAPI which is unstable on my host, I have to change it to i965 driver.
- Besides Jellyfin, I have other programs using rffmpeg, one of them needed stdin/stdout pipes to work in ffmpeg and those were disabled in rffmpeg for some reason.
Other changes include the addition of wrappers for vainfo and ffdetect (Emby utility, the original plan was to use rffmpeg with Emby, but I ended up switching to Jellyfin). There may be more (likely minor) changes, I haven't touched the code for a while.
If any of that could be useful, I could upload those changes to Github after some cleanup.
I believe my SSH configuration could also be of interest. I use GNU Rush to create a restricted user for rffmpeg which can only run commands necessary for transcoding but not anything else and also provides protection against shell injection. I do not think GNU Rush is completely foolproof, but it's much better security-wise than plain bash, especially for uses like ffmpeg remoting.
from rffmpeg.
Here's the explanation of my changes:
servername
field is used alongside host so that you can easily "label" your hosts, instead of having just the domain or ip adress. This is required so that my hcloud-rffmpeg script can easily delete created servers from Hetzner cloud.- By adding Postgresql as an alternative to SQLite you have an option to use an External Database, which allows this script to be completely stateless, this means that you don't need persistent storage for this script to remember all the hosts and processes. Also Postgres is a lot more stable and has a lower chance of corrupting itself (but that's probably very unlikely to happen with this small script
- I also added some QoL code fixes which make the code shorter and more human readable (f"" change)
I don't remember what else I changed...
Now, other changes that I know of were a few bugfixes (SEGFAULT handling) and adding the option to use dated logs, which allows users to debug more easily if they need to see the log for different days, instead of scrolling they can just open the log with date in the name. Also there's a new clear
command that clears all states and processes from the DB.
from rffmpeg.
But mostly commits are just changing the README or SETUP and after someone PRs a new feature they introduce little bugs that get fixed over ~10 additional commits..
from rffmpeg.
While an excellent explanation @aleksasiriski I believe @ddscentral is referring to many even older changes, made after the 1.0 tag. ;-)
Most of these changes are, as you mention, to better support scaling to more than 1 target, as well as to make management "easier" (using CLI commands rather than editing configs), ability to autoconfigure in scripts, and just in general to make the whole thing more like a real program. Plus a ton of cleanup.
Don't fret - my usecase is also super basic, so all the changes work for that usecase too. But I've definitely seen a lot of desire to make this more than just a basic wrapper, hence a lot of the changes I did and @aleksasiriski is now doing.
Now, you don't have to update/backport for your own personal use. 1.0 before all the big changes does still work fine, and if it's working in your usecase, you definitely don't need to rebase it all to the current master
. That said I'd love to see those changes (anything that makes it work better for more people), if you're willing to backport them or even just share the git patches!
from rffmpeg.
Related Issues (20)
- Calling rffmpeg inside a wraper HOT 1
- Rewrite in Go? HOT 3
- Planned features HOT 5
- Docker cache is mentioned in the setup documentation, but not explained HOT 3
- Enable backslash \ escaping HOT 3
- Rewrite in Go
- Feature: Allow host assignment based on hardware acceleration type HOT 4
- Jellyfin in docker with docker volumes? HOT 2
- Feature: rffmpeg run subcommand
- Proactive transcoding HOT 1
- rffmpeg error 1 HOT 2
- Remote side quoting issue HOT 1
- RFE: HW acceleration fallback to no acceleration or per destination HW accel enabled HOT 1
- Playback stuck after couple of minutes HOT 2
- SSH port configuration? HOT 1
- Jellyfin removed the ability to change ffmpeg location HOT 1
- ERROR - Finished rffmpeg with return code 251 HOT 1
- Wrong drivers being used in jellyfin? HOT 1
- How do i add a host? HOT 1
- Cannot modify /var/lib/jellyfin? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rffmpeg.