Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

macstatic

macrumors 68020
Original poster
Oct 21, 2005
2,083
177
Norway
I'm currently using FFMPEG for some video-file conversion tasks and noticed that FFprobe isn't available. Kind of strange since I read it should be installed as part of the package along with FFplay.
I've read other MacOS 10.14 Mojave users (which is what I'm using) having the same problem, but not finding any working solution. I've also tried the suggestions including the ones explained here on linking, uninstalling, reinstalling and doing an update, upgrade and cleanup of Brew itself.

Now, I consider myself a novice when it comes to these "under the hood of my Mac" type things. I know how to use the Terminal and so on, but apart from simple, common commands I usually follow step by step guides on which commands to use.
I don't know how to compile and that sort of thing (unless given a step-by-step guide) and also don't understand how all of these underlying frameworks/files/folders all work.
So that said I thought I'd start all over by removing FFMPEG, then reinstalling it, but I'm running into a bunch of problems.
First of all -yes, I do have FFMPEG installed, as seen here:

Bash:
bash-3.2$ which ffmpeg
/usr/local/bin/ffmpeg
bash-3.2$ ffmpeg -version
ffmpeg version 5.1-tessus Copyright (c) 2000-2022 the FFmpeg developers
built with Apple clang version 11.0.0 (clang-1100.0.33.17)
configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvmaf --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplay
libavutil      57. 28.100 / 57. 28.100
libavcodec     59. 37.100 / 59. 37.100
libavformat    59. 27.100 / 59. 27.100
libavdevice    59.  7.100 / 59.  7.100
libavfilter     8. 44.100 /  8. 44.100
libswscale      6.  7.100 /  6.  7.100
libswresample   4.  7.100 /  4.  7.100
libpostproc    56.  6.100 / 56.  6.100
bash-3.2$

But the additional tools I mentioned aren't available:
Bash:
bash-3.2$ ffprobe
bash: ffprobe: command not found
bash: ffplay: command not found
bash-3.2$

I've learnt that I can make Brew search for software, so I tried that:
Bash:
bash-3.2$ brew search ffprobe
==> Formulae
fprobe
bash-3.2$ brew search ffplay
Error: No formulae or casks found for "ffplay".
bash-3.2$


And here's what happens when I try the various suggestions of linking (I have no idea what this is, but understand it's vital) and uninstalling as suggested in one of the weblinks earlier:
Bash:
bash-3.2$ which ffmpeg
/usr/local/bin/ffmpeg
bash-3.2$ brew link ffmpeg
Error: No such keg: /usr/local/Cellar/ffmpeg
bash-3.2$ brew uninstall ffmpeg
Error: No such keg: /usr/local/Cellar/ffmpeg
bash-3.2$

It seems that Brew can't find FFMPEG even though it's already installed! I've used it and have looked inside the /usr/local/bin/ folder.
Could it be that I've previously installed FFMPEG using another method than through Brew?
Would it be an idea to completely uninstall Brew along with everything it's been used to install on my Mac, then reinstall it all again? How should I do that?
Or are there other ways to go about this?
 
Last edited:
I would say it sounds like your ffmpeg installation isn’t from brew.

You don’t want to uninstall brew. That’ll only leave things in a more confused state. It’s not gonna find software that wasn’t installed by it.

Brew list shows you all the software installed by brew.

Linking and unlinking makes software visible. Your path defines where the terminal looks for programs when you just write their name. Brew installs to a location outside of the path and then links the binaries into the path.


try just brew installing it and then working through whatever errors you wind up in from already having it rm’ing each step it complains about
 
Thanks for explaining.
I just found this: How to remove ffmpeg? and install again.
According to that thread it appears my ffmpeg installation isn't by Brew because if it was it should be located inside /usr/local/Cellar/ which it isn't.

Here's some more info I get from the Terminal regarding where it's placed and possibly installation info:

Bash:
bash-3.2$ which ffmpeg
/usr/local/bin/ffmpeg
bash-3.2$
bash-3.2$
bash-3.2$ ffmpeg
ffmpeg version 5.1-tessus Copyright (c) 2000-2022 the FFmpeg developers
  built with Apple clang version 11.0.0 (clang-1100.0.33.17)
  configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvmaf --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplay
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'
bash-3.2$

I read it's important to know how an app (i.e. FFMPEG in my case) is installed, so you can uninstall it properly.
How do you suggest I do that, so I can reinstall it with Brew again?

The thing is, although I'm no UNIX-wiz/geek/expert I sometimes need to install things which don't come in the form of a normal Mac installer, so I either struggled with this in the past, or gave it up altogether until I came across Homebrew.
But before I started using it I think I tried Macports among other things, or installed things directly using by copying things over from the installation package to the various folders (very time consuming).

And regarding Macports I read a few places that I shouldn't have both Homebrew and Macports installed at the same time as that can cause serious issues.
So maybe I should figure out which apps have been installed with Macports, take a note of that, uninstall Macports (and its apps), then reinstall all those same apps, but with Brew. How do I do all that?
 
I have looked at Mac ports but never used it. Only FreeBSD ports. Usually package managers have a way of listing installed packages. For brew that’s just brew list. For ports I don’t know but it will say in the man page. Man pages are manual (man). Almost all your commands have a manual so you can just run man ports to get the manual for MacPorts.

Homebrew installs to the Cellar, yes but it symlinks into /usr/local/bin (on Intel Macs).

There’s no way of finding out how a program was installed if it’s not in your package managers installed lists. There’s no way of guaranteeing you find all the remnants. But you can just start removing with rm. and if you install another version you’ll likely go through overwriting h the old files anyway. Or at least figuring out what the new install complains about and fixing it when it comes up.

Stick to one package manager, install all your software that you can through it. Much easier that way.
 
You can list MacPorts installed ports by running port installedin a terminal. The procedure for uninstalling it altogether can be found here. I believe that Homebrew really supports only the 3 most current versions of macOS (see Support Tiers), so if you're running Mojave you might be better off sticking with MacPorts. I can report that ffprobe is installed as part of the MacPorts installation of ffmpeg 4.4.6 under Mojave.
 
I read it's important to know how an app (i.e. FFMPEG in my case) is installed, so you can uninstall it properly.
How do you suggest I do that, so I can reinstall it with Brew again?
I suppose so, ffmpeg typically includes a lot of external libraries. It's possible you installed a "static" build, in which case it would have no external libraries (and would also explain the lack of ffprobe/ffplay). I would recommend you just start by removing /usr/local/bin/ffmpeg. The rest of the files, if they exist, are just libraries and headers which won't be looked at when using MacPorts to install software anyways.

You could try installing ffmpeg from brew, then it may ask you about the files it needs to overwrite. But this won't work, some of ffmpeg's libraries won't on macOS 10.14 unless you still have older versions and trick brew into not upgrading them.
And regarding Macports I read a few places that I shouldn't have both Homebrew and Macports installed at the same time as that can cause serious issues.
Not really. Just set up your paths right and it should generally work. You'll have more problems with custom-installed software (like you've done) than with having both MacPorts and homebrew installed.
So maybe I should figure out which apps have been installed with Macports, take a note of that, uninstall Macports (and its apps), then reinstall all those same apps, but with Brew. How do I do all that?
I would strongly recommend you do the exact opposite of this. MacPorts supports older OSes far, far better than brew, I'm sure you've even seen brew's big scary warnings about running on an unsupported OS. When using brew on an unsupported OS, you're forced to use your computer to compile everything, and things can (and do) go wrong. Most port software will come precompiled, including ffmpeg7, which was compiled and works on macOS 10.14. You can always check the details page of a port to see which OSes it works on, based off of port's automated build machines, like here for ffmpeg7.
 
Not really. Just set up your paths right and it should generally work. You'll have more problems with custom-installed software (like you've done) than with having both MacPorts and homebrew installed.
While this is true I still recommend only having one package manager if you can. It's definitely true you should avoid installing outside of your package manager to the greatest extend possible though. - But in principle they can coexist just fine, it's just easier to manage all software in one system rather than spreading it out like that and needing to consider priority of PATH/LD library loads, etc.
 
You can list MacPorts installed ports by running port installedin a terminal.
Thanks. Apparently I have nothing installed under MacPorts, so it seems I just installed MacPorts itself after having come across it:
Bash:
bash-3.2$ port installed
No ports are installed.
bash-3.2$


I believe that Homebrew really supports only the 3 most current versions of macOS (see Support Tiers), so if you're running Mojave you might be better off sticking with MacPorts.
Hmmm...
Maybe I should do it the other way round then (remove Homebrew (along with all apps and frameworks already installed by it) and use MacPorts to re-install all those apps/frameworks).
Here's what I've already installed with Homebrew using "brew list" and "brew list --cask" (I don't know what the latter does, but understand it does something similar):
Bash:
bash-3.2$ brew list -l
==> Formulae
total 0
drwxr-xr-x  3 username  admin  96 Aug 24 19:32 brotli
drwxr-xr-x  3 username  admin  96 Aug 24 17:04 ca-certificates
drwxr-xr-x  3 username  admin  96 Aug 24 16:49 cmake
drwxr-xr-x  3 username  admin  96 Aug 24 17:14 expat
drwxr-xr-x  3 username  admin  96 Aug 24 17:01 flac
drwxr-xr-x  3 username  admin  96 Aug 24 19:32 giflib
drwxr-xr-x  3 username  admin  96 Aug 24 17:02 lame
drwxr-xr-x  3 username  admin  96 Aug 24 17:14 libffi
drwxr-xr-x  3 username  admin  96 Aug 24 17:01 libogg
drwxr-xr-x  3 username  admin  96 Aug 24 17:22 libsndfile
drwxr-xr-x  3 username  admin  96 Aug 24 17:02 libvorbis
drwxr-xr-x  3 username  admin  96 Aug 24 16:48 lzip
drwxr-xr-x  3 username  admin  96 Aug 24 17:03 mpdecimal
drwxr-xr-x  3 username  admin  96 Aug 24 17:02 mpg123
drwxr-xr-x  3 username  admin  96 Aug 24 17:04 openssl@3
drwxr-xr-x  3 username  admin  96 Aug 24 17:03 opus
drwxr-xr-x  3 username  admin  96 Aug 24 17:01 pkgconf
drwxr-xr-x  3 username  admin  96 Aug 24 17:15 python@3.13
drwxr-xr-x  3 username  admin  96 Aug 24 17:11 readline
drwxr-xr-x  3 username  admin  96 Aug 24 17:12 sqlite
drwxr-xr-x  3 username  admin  96 Aug 24 17:13 xz

==> Casks
bash-3.2$ brew list --cask
bash-3.2$


I can report that ffprobe is installed as part of the MacPorts installation of ffmpeg 4.4.6 under Mojave.
That's great! Thanks for confirming.

After reading this Macports vs. Homebrew article it appears Macports is more robust, secure and better suited for older MacOS versions, but more complicated to use than Homebrew.
The last part is a bit worrying as I'm afraid I don't have the necessary in-depth knowledge for it, but I really don't know specifically what makes it complicated to use.

It's not that I'll use it that often, but a few times a year I might need to install a command-line only type tool (such as FFMPEG or EXIFtool) because I need something done which there's no ordinary Mac software for.
And they're usually found at some "geeky" (no offence intended) site where you're presented a dozen cryptically named download links where you need to know which one to get, the knowledge on how to compile or at least know where to manually place the files in some obcure location on your Mac as well as entering a bunch of Terminal commands to get things right.
Unless there are step-by-step guides on exactly what to do I either don't understand it or am afraid to mess up my Mac in case I misunderstand something. That's why I prefer the usual "download a single file and double-click to install" usual Mac software. A no-brainer.
(come to think of it, I think I installed EXIFtool by downloading the installer from its own website and followed the step by step installation instructions. But I'm still scratching my head as to how I installed FFMPEG because their download page appears very confusing.).
But enough rambling..... :)

I believe I came across Homebrew when I needed an app that wasn't in the form of the usual Mac installer, but had to give it up since I didn't understand the installation process. Then I found out it could be installed through brew, using a simple command in the Terminal which they tell for every app at their website.
Is Macports equally easy to use?

I suppose so, ffmpeg typically includes a lot of external libraries. It's possible you installed a "static" build, in which case it would have no external libraries (and would also explain the lack of ffprobe/ffplay). I would recommend you just start by removing /usr/local/bin/ffmpeg. The rest of the files, if they exist, are just libraries and headers which won't be looked at when using MacPorts to install software anyways.
You mean remove only the "ffmpeg" file residing inside /usr/local/bin/ folder, and not the entire folder?
"ffmpeg" there is sized at 78.2 MB (in case that helps determining if it's self-contained).

Searching for "ffmpeg" within the "/usr/ directory I also found this:
/usr/local/Homebrew/Library/Taps/homebrew-ffmpeg/
/usr/local/Homebrew/Library/Taps/homebrew-ffmpeg/homebrew-ffmpeg/README.md
/usr/local/Homebrew/Library/Taps/homebrew-ffmpeg/homebrew-ffmpeg/Formula/ffmpeg.rb

I'm guessing they've been created when I tried re-installing FFMPEG through Brew (but apparently didn't succeed since it was already available, outside of the Homebrew environment). I'm also guessing I shouldn't just delete those folders by dragging them into the trash.

On that subject I also found some FFMPEG folders apparently belonging to Macports, even though my check of installed apps under Macports just told me it hasn't installed anything:

drwxr-xr-x 4 macports wheel 128 Aug 5 15:57 ffmpeg
drwxr-xr-x 4 macports wheel 128 Aug 24 00:22 ffmpeg-devel
drwxr-xr-x 4 macports wheel 128 Aug 5 15:57 ffmpeg4
drwxr-xr-x 4 macports wheel 128 Aug 5 15:57 ffmpeg6
drwxr-xr-x 4 macports wheel 128 Aug 5 15:57 ffmpeg7
drwxr-xr-x 3 macports wheel 96 Jan 24 2025 ffmpegthumbnailer

Could it be that these folders (there's a bunch of other stuff in the /opt/local/var/macports/sources/rsync.macports.org/macports/release/tarballs/ports folder as well) are just an index of what Macports is able to install, and not the actual installations?
 
Last edited:
"ffmpeg" there is sized at 78.2 MB (in case that helps determining if it's self-contained).
Then it's a "static" binary. No other files associated with it, and you can delete it. It's very similar to the ones found in the links provided by @bogdanw, and you likely installed it through one of those.

You can of course use that to install it (and now the ffprobe binary as well) again.
Searching for "ffmpeg" within the "/usr/ directory I also found this:
/usr/local/Homebrew/Library/Taps/homebrew-ffmpeg/
This is a custom tap for building ffmpeg with options, since the homebrew developers decided to remove options from the default formulae. The directory (Taps) is the same as the macports directory you point out later.
I'm also guessing I shouldn't just delete those folders by dragging them into the trash.
You should run brew untap homebrew-ffmpeg/ffmpeg
Could it be that these folders (there's a bunch of other stuff in the /opt/local/var/macports/sources/rsync.macports.org/macports/release/tarballs/ports folder as well) are just an index of what Macports is able to install, and not the actual installations?
Correct.
 
Is Macports equally easy to use?
Yes, it is. After installing, pretty much everything is accomplished via the port command. Here's a brief cheat sheet:
Code:
port help selfupdate          # read the selfupdate documentation

sudo port selfupdate          # update the ports tree
sudo port upgrade outdated    # update all outdated ports

port search exiftool          # search for instances of exiftool in the ports tree
port search -q exiftool       # limit matches to 1 line each
port info exiftool            # see more info about the exiftool port

port -y install exiftool      # do a 'dry-run' install of exiftool
sudo port install exiftool    # actually install exiftool and dependencies
sudo port uninstall exiftool  # uninstall exiftool

port installed                # list installed ports

sudo port reclaim             # delete old/orphaned port files
Running port help cmd will show you the documentation for cmd. The ports tree is rooted at /opt/local and contains the directory structure and files needed to install the various ports in the collection. The files are owned by root or the macports user, so generally you use sudo for instances of the port command which modify the tree. There is a little more to know, but not much.
 
  • Like
Reactions: casperes1996
Then it's a "static" binary. No other files associated with it, and you can delete it. It's very similar to the ones found in the links provided by @bogdanw, and you likely installed it through one of those.
Yes, that's quite likely I installed it that way.
OK. Done deleting the file.
And as expected the Terminal no longer recognizes "ffmpeg".


You can of course use that to install it (and now the ffprobe binary as well) again.

This is a custom tap for building ffmpeg with options, since the homebrew developers decided to remove options from the default formulae. The directory (Taps) is the same as the macports directory you point out later.
I understand.
But in the Macports installation they decided to include ffprobe? It's quite confusing for the end-user not having the necessary in-depth knowledge, but luckily there are forums like these to ask for help 👍


You should run brew untap homebrew-ffmpeg/ffmpeg
OK. Done.
So "untap" is the clean and proper way to complete an uninstallation within Homebrew?

OK, so after completing the steps above I decided to start over by re-installing FFMPEG, but this time using Macports. I used the command "sudo port install ffmpeg" (which, in a similar way to that of the Homebrew site was shown here). So apparently it's not that complicated at all!

The good news is that in addition to FFMPEG it also installed ffprobe!
The bad news is that my scripts can no longer find FFMPEG. Is it correct to assume that I need to edit the /etc/paths file because FFMPEG is now in a new location?
It used to be at /usr/local/bin/ but now it's at /opt/local/bin/.
Bash:
$ which ffmpeg
/opt/local/bin/ffmpeg
$ which ffprobe
/opt/local/bin/ffprobe
$

Here we discussed the "/etc/paths" file which look like this, opened with Textedit:
Bash:
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

Should I add the new path to the end of it, like this and save it?
Bash:
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
/opt/local/bin/

Does this mean Macports puts things in a non-standard location, or did Homebrew do that? Or, is there indeed no standard location for apps, and it's up to whoever made the installer to put it whereever they may desire?


Yes, it is. After installing, pretty much everything is accomplished via the port command. Here's a brief cheat sheet:
Excellent!
Thanks for the cheat sheet :)
Notes like that are very useful especially for stuff you only do a few times a year (and forget between each time).

I agree. Installing apps through Macports wasn't hard at all compared to Homebrew. I don't know why that review made it sound so intimidating.

So, using your cheatsheet I did a "port installed" and expected to see just FFMPEG, ffprobe and whatever else was included with it, but got all of this:

Bash:
$ port installed
The following ports are currently installed:
  aom @3.12.1_0 (active)
  autoconf @2.72_0 (active)
  autoconf-archive @2023.02.20_0 (active)
  automake @1.18.1_0 (active)
  bash @5.2.37_0 (active)
  boehmgc @8.2.8_1 (active)
  brotli @1.1.0_0 (active)
  bzip2 @1.0.8_0 (active)
  cairo @1.17.6_2+quartz+x11 (active)
  cctools @949.0.1_3+xcode (active)
  coreutils @9.5_1 (active)
  curl-ca-bundle @8.13.0_0 (active)
  dav1d @1.5.1_0 (active)
  db48 @4.8.30_5 (active)
  docbook-xml @5.0_3 (active)
  docbook-xml-4.1.2 @5.0_1 (active)
  docbook-xml-4.2 @5.0_1 (active)
  docbook-xml-4.3 @5.0_1 (active)
  docbook-xml-4.4 @5.0_1 (active)
  docbook-xml-4.5 @5.0_1 (active)
  docbook-xml-5.0 @5.0_1 (active)
  docbook-xsl-nons @1.79.2_1 (active)
  expat @2.7.1_0 (active)
  ffmpeg @4.4.6_1+gpl2 (active)
  fontconfig @2.15.0_0 (active)
  fop @1.1_1 (active)
  freetype @2.13.3_0 (active)
  fribidi @1.0.16_0 (active)
  gd2 @2.3.3_7+x11 (active)
  gdbm @1.26_0 (active)
  gdk-pixbuf2 @2.42.12_0 (active)
  gettext @0.22.5_0 (active)
  gettext-runtime @0.22.5_0 (active)
  gettext-tools-libs @0.22.5_0 (active)
  giflib @4.2.3_1 (active)
  glib2 @2.78.4_2+x11 (active)
  gmake @4.4.1_1 (active)
  gmp @6.3.0_0 (active)
  gnutls @3.7.11_1 (active)
  gobject-introspection @1.78.1_5 (active)
  graphite2 @1.3.14_0 (active)
  graphviz @12.2.1_0+pangocairo+x11 (active)
  gts @0.7.6-20121130_1 (active)
  harfbuzz @11.2.1_1 (active)
  icu @76.1_0 (active)
  itstool @2.0.7_3+python313 (active)
  jbigkit @2.1_0 (active)
  kvazaar @2.3.1_0 (active)
  lame @3.100_3+simd (active)
  lcms2 @2.17_0 (active)
  legacy-support @1.5.1_0 (active)
  lerc @4.0.0_1 (active)
  libass @0.17.4_0 (active)
  libbluray @1.3.4_0 (active)
  libde265 @1.0.16_0 (active)
  libdeflate @1.22_0 (active)
  libedit @20250104-3.1_0 (active)
  libelf @0.8.13_4 (active)
  libffi @3.4.8_0 (active)
  libheif @1.19.8_1+examples+kvazaar (active)
  libiconv @1.17_0 (active)
  libidn2 @2.3.8_0 (active)
  libjpeg-turbo @3.1.1_0 (active)
  libLASi @1.1.3_1 (active)
  libmodplug @0.8.9.0_0 (active)
  libnetpbm @11.10.05_0 (active)
  libogg @1.3.6_0 (active)
  libopus @1.5.2_0 (active)
  libpaper @2.2.6_0 (active)
  libpaper-utils @2.2.6_0 (active)
  libpixman @0.46.0_0 (active)
  libpng @1.6.50_0 (active)
  librsvg @2.58.5_0 (active)
  libsdl2 @2.32.8_0 (active)
  libtasn1 @4.20.0_0 (active)
  libtextstyle @0.22.5_0 (active)
  libtheora @1.1.1_3 (active)
  libtool @2.5.4_0 (active)
  libunistring @1.3_0 (active)
  libvidstab @1.1.1_0 (active)
  libvorbis @1.3.7_0 (active)
  libvpx @1.15.0_0 (active)
  libxml2 @2.13.8_0 (active)
  libxslt @1.1.43_0 (active)
  lz4 @1.10.0_0 (active)
  lzo2 @2.10_0 (active)
  m4 @1.4.20_0 (active)
  macports-libcxx @11.1.0_0 (active)
  meson @1.8.4_0 (active)
  mpdecimal @4.0.1_0 (active)
  nasm @2.16.03_0 (active)
  ncurses @6.5_0 (active)
  nettle @3.10_0 (active)
  ninja @1.13.1_0 (active)
  openh264 @2.6.0_0 (active)
  openjpeg @2.5.3_0 (active)
  openssl @3_25 (active)
  openssl3 @3.5.2_0 (active)
  p11-kit @0.25.5_0 (active)
  pango @1.55.0_0+quartz+x11 (active)
  pcre2 @10.45_0 (active)
  perl5.34 @5.34.3_1 (active)
  pkgconfig @0.29.2_0 (active)
  py313-libxml2 @2.13.8_0 (active)
  py313-mako @1.3.10_0 (active)
  py313-markdown @3.8.2_0 (active)
  py313-markupsafe @3.0.2_0 (active)
  py313-meson @1.8.4_0 (active)
  py313-setuptools @80.9.0_0 (active)
  python3_select @0.1_0 (active)
  python3_select-313 @0.1_1 (active)
  python313 @3.13.7_0+lto+optimizations (active)
  python_select @0.3_10 (active)
  python_select-313 @0.3_1 (active)
  readline @8.2.013_0 (active)
  shared-mime-info @2.4_0 (active)
  soxr @0.1.3_0 (active)
  speex @1.2.1_0 (active)
  speexdsp @1.2.1_0 (active)
  sqlite3 @3.50.4_0 (active)
  svt-av1 @3.1.2_0 (active)
  texinfo @7.2_0+perl5_34 (active)
  tiff @4.7.0_0 (active)
  urw-fonts @1.0.7pre44_0 (active)
  util-linux @2.41_0 (active)
  vala @0.56.18_0+valadoc (active)
  w3m @0.5.3.20230121_0 (active)
  webp @1.5.0_0 (active)
  x264 @0.164.3108_1 (active)
  x265 @4.1_0 (active)
  Xft2 @2.3.8_0 (active)
  xmlcatmgr @2.2_1 (active)
  xmlto @0.0.29_0 (active)
  xorg-libice @1.1.2_0 (active)
  xorg-libsm @1.2.6_0 (active)
  xorg-libX11 @1.8.11_0 (active)
  xorg-libXau @1.0.12_0 (active)
  xorg-libXaw @1.0.16_1 (active)
  xorg-libxcb @1.17.0_0+python313 (active)
  xorg-libXdmcp @1.1.5_0 (active)
  xorg-libXext @1.3.6_0 (active)
  xorg-libXmu @1.2.1_0 (active)
  xorg-libXt @1.3.1_0+docs (active)
  xorg-xcb-proto @1.17.0_0+python313 (active)
  xorg-xcb-util @0.4.1_0 (active)
  xorg-xorgproto @2024.1_0 (active)
  xpm @3.5.17_0 (active)
  xrender @0.9.12_0 (active)
  XviD @1.3.7_1 (active)
  xz @5.8.1_0 (active)
  zimg @3.0.5_0 (active)
  zlib @1.3.1_0 (active)
  zstd @1.5.7_0 (active)
  zvbi @0.2.35_6 (active)
$

Apart from FFMPEG, are all of the above libraries that FFMPEG is dependant upon, or did Macports just throw in a bunch of stuff that I (probably) won't ever need to use, just taking up additional disk space?
Again using your cheatsheet I tried the "reclaim" command and got this:
Bash:
$ sudo port reclaim
Password:
--->  Checking for unnecessary unrequested ports
Unrequested ports without requested dependents found:
 cctools  @949.0.1_3+xcode
 nasm  @2.16.03_0
 meson  @1.8.4_0
 py313-meson  @1.8.4_0
 ninja  @1.13.1_0
 itstool  @2.0.7_3+python313
 py313-libxml2  @2.13.8_0
 pkgconfig  @0.29.2_0
 xmlto  @0.0.29_0
 gmake  @4.4.1_1
 texinfo  @7.2_0+perl5_34
 perl5.34  @5.34.3_1
 gdbm  @1.26_0
 util-linux  @2.41_0
 autoconf  @2.72_0
 w3m  @0.5.3.20230121_0
 readline  @8.2.013_0
 db48  @4.8.30_5
 automake  @1.18.1_0
 fop  @1.1_1
 docbook-xsl-nons  @1.79.2_1
 docbook-xml  @5.0_3
 docbook-xml-4.1.2  @5.0_1
 docbook-xml-4.2  @5.0_1
 docbook-xml-4.3  @5.0_1
 docbook-xml-4.4  @5.0_1
 docbook-xml-4.5  @5.0_1
 docbook-xml-5.0  @5.0_1
 xmlcatmgr  @2.2_1
 libpaper-utils  @2.2.6_0
 libpaper  @2.2.6_0
 boehmgc  @8.2.8_1
 autoconf-archive  @2023.02.20_0
Would you like to uninstall them? [Y/n]: n
Not uninstalling ports; use 'port setrequested' to mark a port as explicitly requested.
--->  Checking for inactive ports
Found no inactive ports.
--->  Building list of distfiles still in use
--->  Searching for unused distfiles
No unused files found.
--->  Build location: /opt/local/var/macports/build
--->  Scanning binaries for linking errors
--->  No broken files found.
--->  No broken ports found.
$

For now I pressed "n" (no) for cleaning that stuff up, but can I safely say "yes"?
 
Out of curiosity, why do you trash your Mac with homebrew and ports garbage when you can just download and unzip two binaries?
 
Last edited:
For now I pressed "n" (no) for cleaning that stuff up, but can I safely say "yes"?
Yes, I've never had a problem with answering Y to port reclaim. Your port installed list does look long, and it contains things like bash which aren't obviously ffmpeg dependencies, so I can only guess that maybe you had other things installed before you installed ffmpeg. After running sudo port install ffmpegon my M3 MBP running Sonoma, a subsequent port installedlists roughly 20 more ports than before.

The port command will often download precompiled binaries, but sometimes source is downloaded and compiled, and this could even vary between Intel and AS hardware. So, ports can have build dependencies as well as runtime dependencies, and it's possible that build dependencies could be eliglble for deletion after a port is built. But I really don't know ¯\_(ツ)_/¯

In general, /opt/local/bin and /opt/local/sbin should be at the beginning of your path.
 
  • Like
Reactions: !!!
So "untap" is the clean and proper way to complete an uninstallation within Homebrew?
Untap isn't an uninstall per se. brew rm or brew uninstall (same thing) is uninstalling packages. Homebrew has its index of software it knows of and how to install it. You can add additional sources for software, these are called taps. Untapping removes that sources
 
  • Like
Reactions: !!!
But in the Macports installation they decided to include ffprobe? It's quite confusing for the end-user not having the necessary in-depth knowledge, but luckily there are forums like these to ask for help 👍
For MacPorts (and homebrew) these things you install are packages, not necessarily commands. Packages can install a number of things, multiple commands (binaries), libraries, headers, manual pages, etc. The ffmpeg package will pretty much always contain ffprobe and ffplay.
sudo port install ffmpeg" (which, in a similar way to that of the Homebrew site was shown here). So apparently it's not that complicated at all!
Funnily enough, it's actually quite a bit more complicated, thanks to a bit of a failure of the macports maintainers. The ffmpeg package you installed is very old (version 4, version 8 just released about a week ago). Unfortunately, due to some basically abandoned projects which require ffmpeg4, the macports maintainers have not been upgrading the ffmpeg version. You can install the current stable release of ffmpeg7, however this will give you binaries entitled "ffmpeg7" and "ffprobe7", which you'll need to modify in your scripts, or you'll need to create symlinks. Again, because the macports maintainers have failed to properly handle this situation, we cannot use the "port select" system, which normally allows users to select default versions of ports. To make matters more complicated, you could install the newly released version of ffmpeg, version 8, by using ffmpeg-devel, however, as its name implies, this is the "development" port, which would normally be for installing what are essentially untested beta versions.

I know it's confusing, it sucks. Luckily, you are encoding to H.264, which has been more or less shelf stable for many years. However, it's possible that you'll encounter errors with certain files or be unable to use certain features. I don't know if the ffprobe syntax works, for instance, on such old versions. There are also performance improvements in later versions.
The bad news is that my scripts can no longer find FFMPEG. Is it correct to assume that I need to edit the /etc/paths file because FFMPEG is now in a new location?
Automator does not use /etc/paths, so it does not matter for your case, just update the "export PATH..." line in your script (though as I descibe at the end you don't need to if you symlink the files). If you plan on using shell-scripts (that is, an .sh file) then you'll want to do so.
Does this mean Macports puts things in a non-standard location, or did Homebrew do that? Or, is there indeed no standard location for apps, and it's up to whoever made the installer to put it whereever they may desire?
Technically speaking the "FHS" standard defines opt as the proper place for package managers, but macOS does not formally declare itself apart of that standard. /usr/local is suppsoed to be for "user-installed binaries" whereas /opt is for package-manager maintained binaries. On arm Macs, homebrew installs into /opt/homebrew. Fun, right?
So, using your cheatsheet I did a "port installed" and expected to see just FFMPEG, ffprobe and whatever else was included with it, but got all of this:
You can run "port list requested" to see what you've requested to install. The other things are dependencies required by the various things you've installed. You can check out all of ffmpeg's dependencies by running "port rdeps ffmpeg7". A number of these dependecies no longer compile on Mojave, fortunately the macports maintainers are excellent at patching them to work on older systems (and homebrew's maintainers make zero attempt at this).

As it turns out, bash is indeed an indirect requirement for ffmpeg, from "shared-mime-info".
For now I pressed "n" (no) for cleaning that stuff up, but can I safely say "yes"?
Yes, those are just packages you did not request and are no longer needed for running anything.

and it's possible that build dependencies could be eliglble for deletion after a port is built
Yes, this is exactly what happens.


Personally, I'd recommend uninstalling the ffmpeg port, installing ffmpeg7, then symlinking them into the /usr/local/bin.

Code:
sudo port uninstall ffmpeg
sudo port install ffmpeg7
sudo port reclaim
ln -s /opt/local/bin/ffmpeg7 /usr/local/bin/ffmpeg
ln -s /opt/local/bin/ffprobe7 /usr/local/bin/ffprobe
ln -s /opt/local/bin/ffplay7 /usr/local/bin/ffplay
This will get you to a point where you will both have an (almost) current version of ffmpeg, and not have to change your scripts.
 
Last edited:
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.