Hi! I’m looking for an open-source, preferably FOSS video transcoding web interface.
I would like the transcoding to be done on the server side, be secured by a password if possible (so people don’t 100% the server), and I want no data sharing. Most important feature: must allow web uploads. I don’t want to automate transcoding, or transcode files that are in the server: I want clients to be able to upload their media and get it transcoded.
The transcoding aspect is important: not just a change in container / file extension, but a real transcoding (changing video codec). Being able to change the bitrate is a plus.
I’ve been looking at many projects and most are sadly either too simple for my needs (only container change, no real ability to choose the codec, or unchangeable bitrate), or focused on files that are already on the server.
(something like a ffmpeg web UI that runs on the server would be great)
Thanks :)
Honestly, this one. Handbrake was made as a wrapper for ffmpeg anyways.
must allow web uploads
combine it with a service for uploading files to your server, there’s dozens of those
Well, unless you feel like writing that feature into this project, perhaps you could modify your requirements slightly. Copying your local file to a share that’s also mounted to this handbrake-web instance would accomplish the same goal - taking local files and having them processed by this backend service.
It’s mandatory, sadly. What you’re asking for would require using other software on different devices, and wouldn’t be easy to use for end users.
I feel sick saying it, but I think this is a project you could complete with AI. It sucks ass at understanding complex problems, but it’s good at cranking out small scripts to integrate tools together.
You basically just want a wrapper around ffmpeg with a light web interface to handle upload, script execution, and download.
LLMs are pretty good at spitting out a simple web interface that runs in a barebones server like Express or nginx.
If you don’t need to worry about security or accessibility or any “not on the critical path” concerns, this could probably work after a few iterations.
As for anything already out there - I’ve never come across anything. The closest app I can think of is TDARR which is intended to automatically transcode your media library to h265. That wraps up some of the ffmpeg stuff you want, but doesn’t address the upload/download half of the workflow.
Yea, I’ve used it a fair bit before, and it’s pretty good at doing UI, the one thing that I dislike haha
My process is pretty much pointing out and fixing the small mistakes the model does. A lot of people hate AI but it’s honestly a game changer.
I’ll ask the question why do you want something hosted, if you don’t want the files to be on the server too, or at least accessible via a mount. There’s a couple projects who do that for a reason, you can’t just upload an 80gb video file through a web interface simply. For home use it makes more sense for it to be connected to some sort of nas and you point it to the file on the nas, and then point where on the nas you want the output file.
As written, I don’t think you’ll find a lot. I think what may serve you better is finding a server solution that watches a directory and then runs transcodes based on pre defined templates, and spits them back out in a known location.
Because I want to be able to transcode files from my phone, or from any device without having to install anything.
The problem exists of how do you get files to the server. Again for a big video file you need a place to have the original accessible for the entire duration of the transcode, and you need a drop point to place the file when it’s done. And if you’re doing that, more than likely you have something like Plex or jellyfin, so why not just hook it up to your existing file locations?
I run jobs all the time from my cluster, but the issue always comes back to persistent storage. Where are the files you need to act on, and where should the finished results be placed? You’re trying to skip those important steps here.
It was meant to run on a server with pretty much nothing on it but yea, if uploading big files isn’t possible through a browser, I’ll find other solutions. I was hoping files smaller than like 4GB would be fine.
About the storage, I hoped that it would just either load the file in memory, or store during the transcode, then when done, delete the source file and put the transcoded server for a limited amount of time (1h for example), then wipe it (or just wipe it after download)
Yea, I’d take the approach of having the server monitor a folder, and then just drop files in that folder to be converted.
There are a number of ways to transfer files to that folder, tools like FolderSync (Android), Syncthing or Resilio (every OS) can handle this.
Mhh, yea that seems like the obvious workaround, but not the ideal solution
Possible? Probably.
Practical? Nope!
I’m not aware of any existing products, but this sounds like you could knock it out in a day writing it yourself.
That’s what I usually do but I’m trying not to reinvent the wheel this time (and not spend too much time on it). No luck :-/
Plus I’m a bad dev
Might be able to work something together with TDARR and maybe Syncthing or something to handle the file transportation
I would like the transcoding to be done on the server side
Unless your server has access to a GPU, and uses WebGL to be able to utilize that GPU via web tech, I don’t recommend doing this at all. Gonna take a dozen hours to encode via CPU…
Hmm I was a bit afraid of that, guess I have to try and see
I won’t upload really long media though
It really doesn’t matter how long your media is, it matters the specific conditions you’re changing. Encoding takes time, and it’s outrageously stressful on a CPU. It’s still going to take a long time versus using a GPU.
deleted by creator
deleted by creator
deleted by creator
Tdarr 👀 I saw you
Lol yeah. I went back and realized i missed the entire part of the upload. To be honest it’s still the single best system I’ve ever used for the task. I would still recommend it but you’d have to jank together some other stuff.
Metubeto tdarr? Nvm metube only scrapes/pulls. Maybe a simple file share tool then have tdarr process that?