[✔️]让FFMpeg 在Win7上运行

简介: [✔️]让FFMpeg 在Win7上运行

ffmpeg3.2在win7上编译后,运行仍旧提示缺少api-ms-win-core-processtopology-obsolete-l1-1-0dll.dll


写了测试程序依旧提示:


image.png


刚开始将我的电脑上的dll复制到目标电脑上,发现又报错0x0007的问题,这就很棘手了,折腾了好久,其实是因为这个dll的问题,api-ms-win-core-processtopology-obsolete-l1-1-0dll.dll在win7上是不存在的,这个win10上的确有,所以乱用dll才导致了这个问题。


注意尽量不要乱用DLL!


找的网上一个开源游戏引擎,可以在win7上正常运行,发现它使用的ffmpeg比较低


  • panda3d-1.10.13-tools-win64\thirdparty\win-libs-vc14-x64\ffmpeg


image.png


image.png


这个版本号在ffmpeg源码中的位置: libavutil\version.h


#define LIBAVUTIL_VERSION_MAJOR  55
#define LIBAVUTIL_VERSION_MINOR  34
#define LIBAVUTIL_VERSION_MICRO 101


钉钉在win10、win7上使用的dll版本也是不一致的。


  • ffmpeg release 2.0


#define LIBAVUTIL_VERSION_MAJOR  52
#define LIBAVUTIL_VERSION_MINOR  38
#define LIBAVUTIL_VERSION_MICRO 100
#define LIBAVCODEC_VERSION_MAJOR 55
#define LIBAVCODEC_VERSION_MINOR  18
#define LIBAVCODEC_VERSION_MICRO 102


  • ffmpeg n 2.0.7


#define LIBAVUTIL_VERSION_MAJOR  52
#define LIBAVUTIL_VERSION_MINOR  38
#define LIBAVUTIL_VERSION_MICRO 100
#define LIBAVCODEC_VERSION_MAJOR 55
#define LIBAVCODEC_VERSION_MINOR  18
#define LIBAVCODEC_VERSION_MICRO 102


  • ffmpeg release 2.1


#define LIBAVUTIL_VERSION_MAJOR  52
#define LIBAVUTIL_VERSION_MINOR  48
#define LIBAVUTIL_VERSION_MICRO 101
#define LIBAVCODEC_VERSION_MAJOR 55
#define LIBAVCODEC_VERSION_MINOR  39
#define LIBAVCODEC_VERSION_MICRO 101


  • ffmpeg n 2.1.1


#define LIBAVUTIL_VERSION_MAJOR  52
#define LIBAVUTIL_VERSION_MINOR  48
#define LIBAVUTIL_VERSION_MICRO 101
#define LIBAVCODEC_VERSION_MAJOR 55
#define LIBAVCODEC_VERSION_MINOR  39
#define LIBAVCODEC_VERSION_MICRO 101


使用的是介于2.0.7~R2.1的一个中间版本


解决方案:


如果要降低使用的FFMpeg版本,感觉适配又是一堆坑,最后才发现微软其实有解决这个编译问题,使用 github.com/tidys/FFmpe…  不用切换版本!


FFmpegInterop是一个开源项目,旨在为Windows 10、Windows 8.1和Windows Phone 8.1应用程序提供一种简单的使用FFmpeg播放各种媒体内容的方法。该项目通过实现MediaStreamSource,利用FFmpeg处理媒体,并使用Windows媒体管道进行播放。

这种方法的优点之一是,音频和视频同步由Windows媒体管道处理。您还可以使用Windows内置的音频和视频解码器,这有助于改善移动设备的能量消耗。


仓库将FFMpeg作为了子模块,使用的是某个版本,我这里没有使用它的子模块,直接将我想要编译的FFMpeg版本放到了ffmpeg目录,反正原理都是一样的,然后在根目录下执行脚本


BuildFFmpeg.bat win7


如果不知道都有哪些选项,可以执行


BuildFFmpeg.bat /?


打印结果里面会展示详细的选项内容,这个我也是看源码才知道的,readme里面是没有写win7的,只有阅读源码才会发现这个选项。


一切顺利就会在ffmpeg/Build/<platform\>/<architecture\>生成想要的dll,实测发现的确是可以在win7上运行的。



目录
相关文章
|
2月前
|
存储 C语言 Windows
音视频使用qt测试ffmpeg接口时无法运行
音视频使用qt测试ffmpeg接口时无法运行
68 0
编译ffmpeg,ffplay运行出错怎么办?
编译ffmpeg,ffplay运行出错怎么办?
70 0
可编译运行:调用ffmpeg接口,将RTSP流保存为MP4的C代码
可编译运行:调用ffmpeg接口,将RTSP流保存为MP4的C代码
251 0
|
计算机视觉
Qt实用技巧:win将ffmpeg、opengl、osg等各种库封装成qt模块,运行需要dll,增加自动拷贝运行库到exe目录执行脚本
Qt实用技巧:win将ffmpeg、opengl、osg等各种库封装成qt模块,运行需要dll,增加自动拷贝运行库到exe目录执行脚本
|
7天前
|
编解码
FFmpeg开发笔记(三十三)分析ZLMediaKit对H.264流的插帧操作
《FFmpeg开发实战》书中3.4.3节讲解如何将H.264流封装成MP4。H.264流通常以SPS→PPS→IDR帧开始,这一说法通过雷霄骅的H264分析器得到验证。分析器能解析H.264文件但不支持MP4。ZLMediaKit服务器在遇到I帧时会自动插入SPS和PPS配置帧,确保流符合标准格式。若缺少这些帧,客户端拉流时会报错。FFmpeg开发实战:从零基础到短视频上线》书中提供了更多FFmpeg开发细节。
21 0
FFmpeg开发笔记(三十三)分析ZLMediaKit对H.264流的插帧操作
|
14天前
|
编解码 Java Android开发
FFmpeg开发笔记(三十一)使用RTMP Streamer开启APP直播推流
RTMP Streamer是一款开源的安卓直播推流框架,支持RTMP、RTSP和SRT协议,适用于各种直播场景。它支持H264、H265、AV1视频编码和AAC、G711、OPUS音频编码。本文档介绍了如何使用Java版的RTMP Streamer,建议使用小海豚版本的Android Studio (Dolphin)。加载项目时,可添加国内仓库加速依赖下载。RTMP Streamer包含五个模块:app、encoder、rtmp、rtplibrary和rtsp。完成加载后,可以在手机上安装并运行APP,提供多种直播方式。开发者可以从《FFmpeg开发实战:从零基础到短视频上线》获取更多信息。
46 7
FFmpeg开发笔记(三十一)使用RTMP Streamer开启APP直播推流
|
15天前
|
存储 编解码
FFmpeg开发笔记(三十)解析H.264码流中的SPS帧和PPS帧
《FFmpeg开发实战》书中介绍了音视频编码历史,重点讲述H.264的成功在于其分为视频编码层和网络抽象层。H.264帧类型包括SPS(序列参数集,含视频规格参数),PPS(图像参数集,含编码参数)和IDR帧(立即解码刷新,关键帧)。SPS用于计算视频宽高和帧率,PPS存储编码设置,IDR帧则标志新的解码序列。书中还配以图片展示各帧结构详情,完整内容可参考相关书籍。
42 7
FFmpeg开发笔记(三十)解析H.264码流中的SPS帧和PPS帧
|
22天前
|
编解码 Linux
FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成libxvid
XviD是开源的MPEG-4视频编解码器,曾与DivX一起用于早期MP4视频编码,但现在已被H.264取代。要集成XviD到Linux上的FFmpeg,首先下载源码,解压后配置并编译安装libxvid。接着,在FFmpeg源码目录中,重新配置FFmpeg以启用libxvid,然后编译并安装。成功后,通过`ffmpeg -version`检查是否启用libxvid。详细步骤包括下载、解压libxvid,使用`configure`和`make`命令安装,以及更新FFmpeg配置并安装。
38 2
FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成libxvid
|
27天前
|
移动开发 小程序 视频直播
FFmpeg开发笔记(二十七)解决APP无法访问ZLMediaKit的直播链接问题
本文讲述了在使用ZLMediaKit进行视频直播时,遇到移动端通过ExoPlayer和微信小程序播放HLS直播地址失败的问题。错误源于ZLMediaKit对HTTP地址的Cookie校验导致401无权限响应。通过修改ZLMediaKit源码,注释掉相关鉴权代码并重新编译安装,解决了此问题,使得ExoPlayer和小程序能成功播放HLS视频。详细解决方案及FFmpeg集成可参考《FFmpeg开发实战:从零基础到短视频上线》一书。
43 3
FFmpeg开发笔记(二十七)解决APP无法访问ZLMediaKit的直播链接问题
|
28天前
|
Web App开发 安全 Linux
FFmpeg开发笔记(二十六)Linux环境安装ZLMediaKit实现视频推流
《FFmpeg开发实战》书中介绍轻量级流媒体服务器MediaMTX,但其功能有限,不适合生产环境。推荐使用国产开源的ZLMediaKit,它支持多种流媒体协议和音视频编码标准。以下是华为欧拉系统下编译安装ZLMediaKit和FFmpeg的步骤,包括更新依赖、下载源码、配置、编译、安装以及启动MediaServer服务。此外,还提供了通过FFmpeg进行RTSP和RTMP推流,并使用VLC播放器拉流的示例。
42 3
FFmpeg开发笔记(二十六)Linux环境安装ZLMediaKit实现视频推流