#10737 closed enhancement (wontfix)
Include ffprobe functionality in ffmpeg command-line program
Reported by: | bubbleguuum | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | undetermined |
Version: | unspecified | Keywords: | |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | no | |
Analyzed by developer: | no |
Description (last modified by )
It would be nice if the ffmpeg command-line program included ffprobe functionality (enabled optionally with configure).
Let me explain.
If for some reason you are using statically linked ffmpeg and ffprobe binaries, you end up with 2 large binaries that are almost identical.
If you use these in a docker image, it increases the image size.
On Android, it is also interesting to reduce size as much as possible when using custom statically linked ffmpeg binaries.
Ideally, a single ffmpeg binary that can also do ffprobe is a nice solution.
As a proof of concept, I have attached a patch to the FFmpeg v6.1 source that do this:
- if ffmpeg is invoked with --ffprobe as first argument, it behaves as ffprobe
- Unix only: if ffprobe is a symbolic link pointing to ffmpeg, ffmpeg behaves as ffprobe
Attachments (1)
Change History (8)
by , 12 months ago
Attachment: | ffprobe_in_ffmpeg_6.1.patch added |
---|
comment:2 by , 12 months ago
Summary: | Include ffprobe functionality in ffprobe command-line program → Include ffprobe functionality in ffmpeg command-line program |
---|
comment:3 by , 12 months ago
I know it's doable, but why use static link at the first place?
It's like a hack for unknown purpose. Shared library is for share as the name suggests.
comment:4 by , 12 months ago
It's true that static builds are rather niche but they can have their use.
It is especially practical on Android to bundle a FFmpeg static binary with an app (usually custom, for smaller size).
And on Android you want to limit the APK size, thus integrating ffprobe and ffmpeg functionality in a single binary makes sense.
A single static binary can also be useful in Docker images (easier to add to the image, especially if custom built).
It's also practical for Windows programs bundling FFmpeg (needing ffmpeg + ffprobe).
Though I understand why you'd want to not add this functionality in the main source, and as shown by the patch I attached, it is trivial to do for users that need it.
comment:5 by , 12 months ago
Other arguments in favor of static builds:
- on Android, you do not have to deal with possible problems of dynamic loading of .so across varied Android versions
- on Windows and macOS, FFmpeg is often made available as static binaries. When ffprobe is included you get a large binary that is almost identical to ffmpeg.
- even on Linux they can have their use if you want a portable FFmpeg that works across distros
comment:6 by , 12 months ago
Resolution: | → wontfix |
---|---|
Status: | new → closed |
I don't think this is going to happen in the official repository, ffmpeg and ffprobe (and ffplay) have clearly different purposes. So your patch is one of those cases when you will have to maintain it on your own, out of the official tree.