如何将ffmpeg的dll放置到任意位置?

本文介绍基于FFmpeg库开发的thumb.dll的创建过程及注意事项,包括工程配置、库文件引用等,并详细阐述了调用该DLL的exe文件中各相关DLL的加载顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现在假设做了一个基于ffmpeg动态库的thumb.dll,那么加载的顺序很重要。

一、简略提提基于ffmpeg库开发的DLL

创建thumb.dll的过程就略过了,网上很多教程。说一下thumb(我的工程名字)的工程注意事项吧。

工程属性->VC++目录配置“包含目录”和“库目录”。

包含目录添加“include”,库目录添加“lib”

这样编译貌似还有问题,要将“清单工具”->“输入和输出”的“嵌入清单”改为“否”

然后下载的dev版本的ffmpeg中include和lib复制到工程目录thumb/thumb下面。

要加_mingw.h和inttypes.h。stdint.h看情况,我忘记这个文件是属于ffmpeg库还是pthread引用的。

将shared版本的ffmpeg中dll们复制到thumb/thumb下面

然后回到thumb工程,写了一下截图的代码,具体可以到网上搜索的,这里不提供了。

这里没有在工程里面配置链接器,所以在工程里面要使用#pragma comment(lib,"xx.lib")将相应的lib引用。

最后编译得到thumb.dll

二。写个调用thumb.dll的exe(run_thumb_dll)

添加->新增项目->run_thumb_dll

在_tmain函数下先按顺序加载相关的dll。

1.将libgcc_s_dw2-1.dll加载,因为在网站https://ffmpeg.zeranoe.com/builds/win32/ 下载的shared版本是用gcc编译的。

2.加载avutil-xx.dll->swresample-xx.dll->avcodec-xx.dll

3.加载avformat-xx.dll

4.加载postproc-xx.dll->swscale-xx.dll->avfilter-xx.dll

5.加载avdevice-xx.dll

6.加载个人的dll文件(thumb.dll)

说明一下:

第2步avcodec会用到avutil和swresample的一些接口,所以avutil和swresample要放前面加载。

第3步avformat在旧版ffmpeg是和avcodec有关联的,所以还是放在avcodec之后加载比较合适。

第4步avfilter会用到swscale的,所以swscale必须在它之前。postproc不一定有用到的,但是网站下载的版本是用到,所以用网站的avfilter开发必须加postproc。

第5步avdevice与avcodec、avfilter都有关系的,所以必须放在最后调用。

因此得到

LoadLibrary(L"xxx/libgcc_s_dw2-1.dll");

LoadLibrary(L"xxx/avutil-xx.dll");

LoadLibrary(L"xxx/swresample-xx.dll");

LoadLibrary(L"xxx/avcodec-xx.dll");

LoadLibrary(L"xxx/avformat-xx.dll");

LoadLibrary(L"xxx/postproc-xx.dll");

LoadLibrary(L"xxx/swscale-xx.dll");

LoadLibrary(L"xxx/avfilter-xx.dll");

LoadLibrary(L"xxx/avdevice-xx.dll");

LoadLibrary(L"xxx/thumb.dll");

{不会上传图片,凑合看

### 如何正确安全地下载 `ffmpeg.dll` 文件 当遇到 `ffmpeg.dll` 缺失的情况时,不建议直接从不明网站单独下载该文件并放置到系统目录中。这种做法存在安全隐患,并可能导致其他兼容性问题。 #### 安全获取 `ffmpeg.dll` 最推荐的方式是从官方渠道安装完整的 FFmpeg 工具包来获得合法版本的 `ffmpeg.dll`: 1. 访问官方网站 [FFmpeg](https://ffmpeg.org/download.html),这里提供了适用于不同操作系统的预编译二进制文件。 2. 下载适合当前操作系统架构(32位或64位)的静态构建版压缩包。 3. 解压下载好的档案至指定位置,比如 C:\Program Files\ffmpeg 或者用户自定义路径。 4. 将解压后的 bin 文件夹添加到环境变量 PATH 中以便命令行全局调用。 完成上述步骤之后,在新创建的应用会话里就可以正常使用由官方发布的最新稳定版 `ffmpeg.dll` 了[^1]。 对于已经安装过 FFmpeg 却仍然报告缺少 dll 的情形,则可能是由于环境配置错误或者是旧版本残留冲突所引起。此时应该考虑重新设置环境变量指向正确的安装路径,或者尝试卸载后再按照前述流程全新部署一次[^2]。 另外需要注意的是,如果只是个别应用报错提示找不到此动态链接库而其它地方均能正常工作的话,那么也可以仅针对那个特定程序的工作目录复制一份来自正规来源的 `ffmpeg.dll` 进去作为临时解决方案;不过这并不是长久之计,最好还是统一管理好整个系统的依赖关系以避免潜在风险[^3]。 ```bash # 添加FFmpeg到PATH环境变量的例子(Windows PowerShell) $env:Path += ";C:\path_to_ffmpeg\bin" ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值