我希望第三方软件使用 FFmpeg 编解码器,但文件名不匹配
软件和文件版本
FFmpeg
我有最新版本的 FFmpeg,版本 5.0-full_build-www.gyan.dev ,这是 Windows 的编译可执行文件。我下载了“ffmpeg-release-full-shared.7z”,其中包含 \bin 中的 dll。
Audacity
我有最新版本的 Audacity 3.1.3,我是使用 64 位安装程序安装的。
在 Audacity 的偏好设置中 >库,可以选择使用 FFmpeg 的库。在帮助>下诊断>显示日志,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
同样,我有最新版本的 GoldWave,6.6 ,可以使用FFmpeg的库。该文档指示我找到 avcodec-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。
问题
- 看来我可以并行安装 FFmpeg。对我来说最新版本是 Audacity 4.4.1,GoldWave 是旧版本。这会使软件能够使用它可以检测到的任何版本的 FFmpeg 吗?
- 如果是的话,我想要那个吗?在 FFmpeg 中,一些编解码器和编解码器实现在最近的版本中得到了改进,所以我想使用旧版本的 FFmpeg 吗?
- 我认为复制 avformat-59.dll 并重命名副本 avformat-58.dll 将不起作用。我说得对吗?
- 我认为 Audacity 和 GoldWave 的开发人员可以更改他们的代码以使用 FFmpeg 5.0。这可能是正确的,还是存在我不理解或不知道的障碍?
- 我无法控制 FFmpeg 是否更改文件名,也无法控制 Audacity 或 GoldWave 的开发人员,那么我可以控制哪些选项?有没有比多次安装 FFmpeg 更优雅的解决方案?我认为 Audacity 暗示最简单的解决方案是安装一个精简的 FFmpeg只是为了大胆。
Software and file versions
FFmpeg
I have the latest release of FFmpeg, version 5.0-full_build-www.gyan.dev, which is a compiled executable for Windows. I downloaded "ffmpeg-release-full-shared.7z," which includes dlls in \bin.
Audacity
I have the latest release of Audacity, 3.1.3, which I installed using the 64-bit installer.
In Audacity's Preferences > Libraries, there is an option to use FFmpeg's libraries. Under Help > Diagnostics > Show log, Audacity seems to be looking for one of three versions of avformat-NN.dll: avformat-58.dll, avformat-57.dll, or 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.
I have avformat-59.dll in \bin. System PATH includes \path\to\FFmpeg\bin
GoldWave
Similarly, I have the latest version of GoldWave, 6.6, which can use FFmpeg's libraries. The documentation instructs me to find avcodec-56.dll. I have avcodec-59.dll.
In the file, "ffmpeg-4.4.1-full_build-shared.7z", on gyan.dev for the previous release of ffmpeg, 4.4.1, \bin includes avformat-58.dll, which seems to be what Audacity is looking for. It has avcodec-58.dll, not avcodec-56.dll, though. I suspect that if I look through prior releases of FFmpeg, I will find avcodec-56.dll.
Questions
- It seems that I could have parallel installations of FFmpeg. The latest version for me, 4.4.1 for Audacity, and something older for GoldWave. Would that enable the software to use whatever version of FFmpeg it could detect?
- If yes, would I want that? In FFmpeg, some codecs and codec implementations have improved in recent releases, so do I want to use older versions of FFmpeg?
- I assume that copying avformat-59.dll and renaming the copy avformat-58.dll will not work. Am I correct?
- I assume that the devs of Audacity and GoldWave could change their code to work with FFmpeg 5.0. Is that likely to be correct, or is there an obstacle I don't understand or know about?
- I can't control whether FFmpeg changes file names, and I can't control the devs at Audacity or GoldWave, so what options are available to me that I can control? Is there a more elegant solution than multiple installations of FFmpeg? I think Audacity is implying that the easiest solution is to install a stripped-down FFmpeg just for Audacity.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
数字
56
..etc 指的是 FFmpeg 项目一部分的各个库的版本号。因此,avcodec-59
是 libavcodec 的主要版本 59。是的,只要您可以为客户端应用程序设置自定义搜索路径,您就可以毫无问题地进行并行安装。
我怀疑这些客户端正在使用 libavcodec 导出到主要编解码器。这些通常都很成熟,所以旧版本应该没问题。
这是正确的。在主要版本中,API 和 ABI 可能会发生变化。
取决于他们使用的 API 调用。几年前引入了新的解码/编码 API,但为了兼容性而保留了旧的 API,以便客户端可以逐渐过渡。在 v59 中,那些旧的调用被删除了。所以,如果他们确实转型了,那么是的。
The numbers
56
..etc refer to the version number of the individual libraries that are a part of the FFmpeg project. So,avcodec-59
is major version 59 of libavcodec.Yes, you can have parallel installations without issue, provided you can set custom search paths for the client application.
I suspect these clients are using libavcodec to export to major codecs. Those are generally mature, so older versions should be fine.
That's correct. Across major versions, the API and ABI will likely have changed.
Depends on what API calls they're using. A new decode/encode API was introduced some years ago but the old one was kept for compatibility, so clients could transition over gradually. In v59, those old calls were removed. So, if they did transition, then yes.