为什么 ffmpeg 需要 DNS 解析器作为它的依赖?

Why does ffmpeg need DNS resolver as its dependencies?

我今天使用 brew install ffmpeg libav 安装 FFmpeg 和 libav,这时我注意到依赖项列表中有 unbound

这很奇怪,因为 unbound 是 DNS 解析器,为什么 ffmpeg 需要它。

❯ brew install ffmpeg libav
==> Installing dependencies for ffmpeg: aom, frei0r, gmp, libtasn1, nettle, p11-kit, unbound, gnutls, lame, libass, libbluray, libsoxr, libvidstab, libvpx, opencore-amr, opus, libsndfile, libsamplerate, rubberband, sdl2, speex, giflib, leptonica, tesseract, theora, x264, x265 and xvid

我什至检查了 ffmpeg 的信息列表,但 unbound 不在那里

❯ brew info ffmpeg
ffmpeg: stable 4.2.1 (bottled), HEAD
Play, record, convert, and stream audio and video
https://ffmpeg.org/
/usr/local/Cellar/ffmpeg/4.2.1_2 (287 files, 56.6MB)*
- Poured from bottle on 2019-12-19 at 10:45:56
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/ffmpeg.rb
==> Dependencies
Build: nasm ✘, pkg-config ✔, texi2html ✘
Required: aom ✔, fontconfig ✔, freetype ✔, frei0r ✔, gnutls ✔, lame ✔, libass ✔, libbluray ✔, libsoxr ✔, libvidstab ✔, libvorbis ✔, libvpx ✔, opencore-amr ✔, openjpeg ✔, opus ✔, rtmpdump ✔, rubberband ✔, sdl2 ✔, snappy ✔, speex ✔, tesseract ✔, theora ✔, x264 ✔, x265 ✔, xvid ✔, xz ✔
==> Options
--HEAD
    Install HEAD version
==> Analytics
install: 66,434 (30 days), 280,128 (90 days), 1,079,492 (365 days)
install-on-request: 48,053 (30 days), 203,583 (90 days), 759,254 (365 days)
build-error: 0 (30 days)

参考链接

On Homebrew unbound 是 gnutls 的依赖项,它是使用 --enable-gnutls 时 ffmpeg 的依赖项(在 ffmpeg Homebrew 公式中默认使用)。

gnutls(或 openssl、mbedtls、libtls、securetransport)在 ffmpeg 中用于 HTTPS 支持。

brew deps --tree 可以帮助您解决这个问题。在 ffmpeg 的情况下,unboundgnutls 引入以支持 HTTPS。

% brew deps --tree ffmpeg        
ffmpeg
├── aom
├── fontconfig
│   └── freetype
│       └── libpng
├── freetype
│   └── libpng
├── frei0r
├── gnutls
│   ├── gmp
│   ├── libidn2
│   │   ├── gettext
│   │   └── libunistring
│   ├── libtasn1
│   ├── libunistring
│   ├── nettle
│   │   └── gmp
│   ├── p11-kit
│   │   └── libffi
│   └── unbound
│       ├── libevent
│       │   └── openssl@1.1
│       └── openssl@1.1
├── lame
├── libass
│   ├── freetype
│   │   └── libpng
│   ├── fribidi
│   └── harfbuzz
│       ├── cairo
│       │   ├── fontconfig
│       │   │   └── freetype
│       │   │       └── libpng
│       │   ├── freetype
│       │   │   └── libpng
│       │   ├── glib
│       │   │   ├── gettext
│       │   │   ├── libffi
│       │   │   ├── pcre
│       │   │   └── python
│       │   │       ├── gdbm
│       │   │       ├── openssl@1.1
│       │   │       ├── readline
│       │   │       ├── sqlite
│       │   │       │   └── readline
│       │   │       └── xz
│       │   ├── libpng
│       │   ├── lzo
│       │   └── pixman
│       ├── freetype
│       │   └── libpng
│       ├── glib
│       │   ├── gettext
│       │   ├── libffi
│       │   ├── pcre
│       │   └── python
│       │       ├── gdbm
│       │       ├── openssl@1.1
│       │       ├── readline
│       │       ├── sqlite
│       │       │   └── readline
│       │       └── xz
│       ├── graphite2
│       └── icu4c
├── libbluray
│   ├── fontconfig
│   │   └── freetype
│   │       └── libpng
│   └── freetype
│       └── libpng
├── libsoxr
├── libvidstab
├── libvorbis
│   └── libogg
├── libvpx
├── opencore-amr
├── openjpeg
│   ├── libpng
│   ├── libtiff
│   │   └── jpeg
│   └── little-cms2
│       ├── jpeg
│       └── libtiff
│           └── jpeg
├── opus
├── rtmpdump
│   └── openssl@1.1
├── rubberband
│   ├── libsamplerate
│   │   └── libsndfile
│   │       ├── flac
│   │       │   └── libogg
│   │       ├── libogg
│   │       └── libvorbis
│   │           └── libogg
│   └── libsndfile
│       ├── flac
│       │   └── libogg
│       ├── libogg
│       └── libvorbis
│           └── libogg
├── sdl2
├── snappy
├── speex
│   └── libogg
├── tesseract
│   ├── leptonica
│   │   ├── giflib
│   │   ├── jpeg
│   │   ├── libpng
│   │   ├── libtiff
│   │   │   └── jpeg
│   │   ├── openjpeg
│   │   │   ├── libpng
│   │   │   ├── libtiff
│   │   │   │   └── jpeg
│   │   │   └── little-cms2
│   │   │       ├── jpeg
│   │   │       └── libtiff
│   │   │           └── jpeg
│   │   └── webp
│   │       ├── jpeg
│   │       ├── libpng
│   │       └── libtiff
│   │           └── jpeg
│   └── libtiff
│       └── jpeg
├── theora
│   ├── libogg
│   └── libvorbis
│       └── libogg
├── x264
├── x265
├── xvid
└── xz