我想让第三方软件使用 FFmpeg 编解码器,但文件名不匹配

I want third-party software to use the FFmpeg codecs but the file names don't match

软件和文件版本

FFmpeg

我有最新版本的 FFmpeg version 5.0-full_build-www.gyan.dev,它是 Windows 的编译可执行文件。我下载了“ffmpeg-release-full-shared.7z”,其中包含 \bin 中的 dll。

大胆

我有 Audacity 的最新版本 3.1.3,我使用 64 位安装程序安装了它。

在 Audacity 的首选项 > 库中,有一个选项 use FFmpeg's libraries。在帮助 > 诊断 > 显示日志下,Audacity 似乎正在寻找 avformat-NN.dll 的三个版本之一:avformat-58.dll、avformat-57.dll 或 avformat-55.dll

14:18:28: Looking for FFmpeg libraries
14:18:46: User-specified path = 'C:\Users\Blaze-X120e\Documents\Programs\FFmpeg\bin'
14:18:46: Error: Failed to load shared library 'avformat-58.dll' (error 126: The specified module could not be found.)
14:18:46: Error: Failed to load avformat-58.dll (error 126: The specified module could not be found.)
14:18:46: Error: Failed to load shared library 'avformat-57.dll' (error 126: The specified module could not be found.)
14:18:46: Error: Failed to load avformat-57.dll (error 126: The specified module could not be found.)
14:18:46: Error: Failed to load shared library 'avformat-55.dll' (error 126: The specified module could not be found.)
14:18:46: Error: Failed to load avformat-55.dll (error 126: The specified module could not be found.)
14:18:46: Error: User-specified path does not contain FFmpeg libraries.

我在 \bin 中有 avformat-59.dll。系统路径包括 \path\to\FFmpeg\bin

金波

同样,我有最新版本的GoldWave,6.6,可以使用FFmpeg的库。文档指示我查找 a​​vcodec-56.dll。我有 avcodec-59.dll.

在文件“ffmpeg-4.4.1-full_build-shared.7z”中,在 gyan.dev 上,对于先前版本的 ffmpeg,4.4.1,\bin 包含 avformat-58.dll ,这似乎是 Audacity 正在寻找的东西。它有 avcodec-58.dll,但没有 avcodec-56.dll。我怀疑如果我查看以前版本的 FFmpeg,我会发现 avcodec-56.dll.

问题

  1. 看来我可以并行安装 FFmpeg。对我来说是最新版本,Audacity 是 4.4.1,GoldWave 是旧版本。这会让软件使用它可以检测到的任何版本的 FFmpeg 吗?
  2. 如果是,我想要那个吗?在 FFmpeg 中,一些编解码器和编解码器实现在最近的版本中得到了改进,所以我想使用旧版本的 FFmpeg 吗?
  3. 我假设复制 avformat-59.dll 并重命名副本 avformat-58.dll 将不起作用。我说得对吗?
  4. 我假设 Audacity 和 GoldWave 的开发人员可以更改他们的代码以使用 FFmpeg 5.0。这可能是正确的,还是存在我不理解或不知道的障碍?
  5. 我无法控制 FFmpeg 是否更改文件名,我也无法控制 Audacity 或 GoldWave 的开发人员,那么我可以控制哪些选项可用?有没有比多次安装 FFmpeg 更优雅的解决方案?我 认为 Audacity 暗示最简单的解决方案是安装 a stripped-down FFmpeg just for Audacity.

数字56..etc指的是作为FFmpeg项目一部分的各个库的版本号。所以,avcodec-59 是 libavcodec 的主要版本 59。

  1. 是的,您可以毫无问题地进行并行安装,前提是您可以为客户端应用程序设置自定义搜索路径。

  2. 我怀疑这些客户正在使用 libavcodec 导出到主要编解码器。那些一般都是成熟的,所以旧版本应该没问题。

  3. 没错。在主要版本中,API and ABI 可能已经更改。

  4. 取决于他们使用的 API 电话。几年前引入了一个新的 decode/encode API,但为了兼容性而保留了旧的,因此客户可以逐渐过渡。在 v59 中,那些旧调用已被删除。所以,如果他们确实过渡了,那么是的。