[✔️]让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上运行的。



目录
相关文章
|
10月前
|
存储 C语言 Windows
音视频使用qt测试ffmpeg接口时无法运行
音视频使用qt测试ffmpeg接口时无法运行
170 0
编译ffmpeg,ffplay运行出错怎么办?
编译ffmpeg,ffplay运行出错怎么办?
96 0
可编译运行:调用ffmpeg接口,将RTSP流保存为MP4的C代码
可编译运行:调用ffmpeg接口,将RTSP流保存为MP4的C代码
422 0
|
计算机视觉
Qt实用技巧:win将ffmpeg、opengl、osg等各种库封装成qt模块,运行需要dll,增加自动拷贝运行库到exe目录执行脚本
Qt实用技巧:win将ffmpeg、opengl、osg等各种库封装成qt模块,运行需要dll,增加自动拷贝运行库到exe目录执行脚本
|
5月前
|
Linux 开发工具 Android开发
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
ijkplayer是由Bilibili基于FFmpeg3.4研发并开源的播放器,适用于Android和iOS,支持本地视频及网络流媒体播放。本文详细介绍如何在新版Android Studio中导入并使用ijkplayer库,包括Gradle版本及配置更新、导入编译好的so文件以及添加直播链接播放代码等步骤,帮助开发者顺利进行App调试与开发。更多FFmpeg开发知识可参考《FFmpeg开发实战:从零基础到短视频上线》。
502 2
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
|
5月前
|
编解码 语音技术 内存技术
FFmpeg开发笔记(五十八)把32位采样的MP3转换为16位的PCM音频
《FFmpeg开发实战:从零基础到短视频上线》一书中的“5.1.2 把音频流保存为PCM文件”章节介绍了将媒体文件中的音频流转换为原始PCM音频的方法。示例代码直接保存解码后的PCM数据,保留了原始音频的采样频率、声道数量和采样位数。但在实际应用中,有时需要特定规格的PCM音频。例如,某些语音识别引擎仅接受16位PCM数据,而标准MP3音频通常采用32位采样,因此需将32位MP3音频转换为16位PCM音频。
144 0
FFmpeg开发笔记(五十八)把32位采样的MP3转换为16位的PCM音频
|
5月前
|
XML 开发工具 Android开发
FFmpeg开发笔记(五十六)使用Media3的Exoplayer播放网络视频
ExoPlayer最初是为了解决Android早期MediaPlayer控件对网络视频兼容性差的问题而推出的。现在,Android官方已将其升级并纳入Jetpack的Media3库,使其成为音视频操作的统一引擎。新版ExoPlayer支持多种协议,解决了设备和系统碎片化问题,可在整个Android生态中一致运行。通过修改`build.gradle`文件、布局文件及Activity代码,并添加必要的权限,即可集成并使用ExoPlayer进行网络视频播放。具体步骤包括引入依赖库、配置播放界面、编写播放逻辑以及添加互联网访问权限。
311 1
FFmpeg开发笔记(五十六)使用Media3的Exoplayer播放网络视频
|
5月前
|
Web App开发 安全 程序员
FFmpeg开发笔记(五十五)寒冬里的安卓程序员可进阶修炼的几种姿势
多年的互联网寒冬在今年尤为凛冽,坚守安卓开发愈发不易。面对是否转行或学习新技术的迷茫,安卓程序员可从三个方向进阶:1)钻研谷歌新技术,如Kotlin、Flutter、Jetpack等;2)拓展新功能应用,掌握Socket、OpenGL、WebRTC等专业领域技能;3)结合其他行业,如汽车、游戏、安全等,拓宽职业道路。这三个方向各有学习难度和保饭碗指数,助你在安卓开发领域持续成长。
122 1
FFmpeg开发笔记(五十五)寒冬里的安卓程序员可进阶修炼的几种姿势
|
6月前
|
XML Java Android开发
FFmpeg开发笔记(五十二)移动端的国产视频播放器GSYVideoPlayer
GSYVideoPlayer是一款国产移动端视频播放器,支持弹幕、滤镜、广告等功能,采用IJKPlayer、Media3(EXOPlayer)、MediaPlayer及AliPlayer多种内核。截至2024年8月,其GitHub星标数达2万。集成时需使用新版Android Studio,并按特定步骤配置依赖与权限。提供了NormalGSYVideoPlayer、GSYADVideoPlayer及ListGSYVideoPlayer三种控件,支持HLS、RTMP等多种直播链接。
257 18
FFmpeg开发笔记(五十二)移动端的国产视频播放器GSYVideoPlayer
|
5月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
163 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库