I anticipate some much more savvy than myself saying this wrapper is unnecessary as you can do all of this “easily” with ffmpeg. I welcome tools like this that have a more common user in mind, evidenced immediately in the beginning of the README with common use cases.<p>Ffmpegs documentation on the other hand forces me to feel as though it’s normal to assume knowledge about a point in a video and what it means if my encoders are different from input to output.
There are a number of issues with this program. First, there are a large number of bugs and general implementation issues. For example, "vdx --help" does not print help output, but instead raises "Need a glob pattern for input files". Invalid options are ignored, and debug output is non-existent: "vdx myfile.mp4 --asdf garbage" results in "error build/myfile.garbage" with no other explanation. It turns out that it is interpreted as "vdx myfile.mp4 -f garbage". The list goes on and on.<p>More fundamentally, however, FFmpeg supports both simple and complex operations. This program takes simple operations and does them wrong, and takes complex operations and throws them out. For example, the command to halve the audio volume of an mp4 file containing audio and video would be:<p><pre><code> ffmpeg -i infile.mp4 -c:v copy -af volume=.5 outfile.mp4
</code></pre>
There are a number of problems with this command. Most importantly, it always encodes audio output with the built-in AAC encoder at 128 kbps. A better command would take into account the input quality and desired output quality and codec, then specify something like "-c:a libopus -b:a 80k" to select the desired result. vdx solves this complexity by simply ignoring it and using the FFmpeg default. A similar problem applies to its video codec settings, which always uses libx264 with the default settings. This is a poor choice. Almost always, either a slow setting (for better quality and smaller file size) or a fast setting (for worse quality and larger file size) is desired. Also, in my experience, either a lower CRF (for high-quality film content) or a higher CRF (for low-quality phone/ripped content) is desired. If you're going to punt on doing it properly and just use the defaults, you might as well just use ffmpeg directly.<p>The issues go far deeper than that, however. The entire design of the program is flawed. It appears to try to process the file twice: once for video, and once for audio. However, the author seems not to know that ffmpeg will re-encode video by default. Therefore, a simple command like "vdx myfile.mp4 --volume 0.5" unnecessarily re-encodes the <i>entire</i> video, <i>twice</i>. It applies operations in what seems to be undefined order, which is a problem when (for example) cropping and also resizing a video.
This is great! I'd love to see more wrappers like these for ffmpeg. Despite 5 years of using it, I can rarely run any ffmpeg commands without looking at StackOverflow. I wrote a similarly-inspired wrapper because of this as well, with a different subset of features, some of which rely on moviepy: <a href="https://github.com/achalddave/vid" rel="nofollow">https://github.com/achalddave/vid</a><p>Would be great if vdx learned more "common" ffmpeg features (creating a slideshow from a set of images, speeding up videos, simple drawing, etc.) while maintaining its simplicity!
There's Handbrake-CLI which is easy to use, but very powerful nonetheless
<a href="https://handbrake.fr/docs/en/latest/cli/command-line-reference.html" rel="nofollow">https://handbrake.fr/docs/en/latest/cli/command-line-referen...</a>
I'm wondering why ffmpeg is more popular than other media libraries like gstreamer.<p>I'm currently learning gstreamer and it seems to cover more features than ffmpeg. Its CLI command, gst-launch is fantastic to prototype. Is there a specific reasons why more people choose ffmpeg over gstreamer for go-to media processing library?
If you’re okay to run things in the cloud, <a href="https://transloadit.com" rel="nofollow">https://transloadit.com</a> made an abstraction over FFmpeg that chunks files up, and parallely encodes them on many machines to speed things up (“turbo mode”). 5GB free each month. Disclosure: I’m a founder :)
Slightly off topic, but are there easy-to-use GUI wrappers for FFmpeg you would recommend? I find myself using FFmpeg about five times a year, and each time I had to google what I wanted to do. I feel a good GUI application will be extremely helpful.
can i process each frame of the video as a picture (so i can filter the frames by whether they have a particular logo in them, and make a video of just those frames)