XP下使用FFMPEG(API和exe)遇到的问题和解决方法。

XP下使用FFMPEG(API和exe)遇到的问题和解决方法。

1、需求背景

因为最近接到项目上的一个需求,就是在MP4(H264编码)文件里叠加指定字符,于是就想到了使用FFMPEG来解决。

2、遇到的问题

从理论上完全是行得通的(FFMPEG 4.x):

  • 对MP4文件解码 ;
  • 将视频帧推入滤镜处理,获取输出视频帧;
  • 编码写文件。
    问题:
  • XP下不支持 FFMPEG 4.x,系统库报错,“无法定位程序输入点XXX于动态链接库KERNEL32.dll”,找了KERNEL32.dll并且用Depends看了能找到缺少的函数,拷贝到程序运行目录下也不能解决,拷贝到系统System32下也不能解决。最关键的是现在下载FFMPEG Shared的地方居然关掉了!!!难道要自己下源码编译?伸手党可不做这么麻烦的事情。

3、解决方法

  • 找低版本的FFMPEG代替。找了一天才找到了一个FFMPEG 3.X版本的, 放到XP里面运行FFMPEG.exe,还是报错,发现可能是XP下的一些C++函数不适用,比如——vsnprintf_s,…,下载一个叫fixff.cmd的处理命令,放到DLL的目录下双击运行,发现其实就是修改DLL里面这些C++接口兼容到XP。
  • 接下来又是运行FFMPEG.exe,还是报错,仍然有不兼容的C接口,按道理不应该啊,就怀疑是FFMPEG.exe本身使用了这些不兼容XP的C接口,fixff.cmd只修改了DLL的并没有动FFMPEG.exe,然后就自己做了一个DEMO,再运行,果然可以,至此已经十分接近成功了。
  • 但是打开输入输出文件的时候,总是返回负数,结果发现3版本还是需要初始化操作(4.x已经不需要初始化了)。 然后在使用avfiter里面的avfilter_graph_create_filter时候,报错了,看了参数信息都没错,就像到上面fixff.cmd修改了DLL里面的一些C接口,可能是这个原因,就只把avfiter.dll这个动态库拷贝回来,完美解决。不容易,研究了一天。

下载链接

链接: https://download.csdn.net/download/qq_27731413/13189174.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值