使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c(一)

简介: 使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c(一)

前言

本文使用官方发布的 SDK 开发包来亲手编译 ffmpeg.c 文件,编译成功后可以对其内部的源码按照我们的需求进行修改,为后面的转码器的开发做个铺垫。


一、前期准备

1、所需文件

ffmpeg-4.3.1-win32-dev

  • include:头文件
  • Lib:库文件

链接:https://pan.baidu.com/s/1gYLUjrFy1kaU5RDe-ihPQw

提取码:iukl

ffmpeg-4.3.1-win32-shared

  • Bin: 动态库 dll

链接:https://pan.baidu.com/s/1SyHTQN0ke1KAtyCHbARtzg

提取码:l12n

FFmpeg4.3.1 的 SDK 开发包

  • ffmpeg.c、cmdutil.c 等源文件

链接:https://github.com/ShiftMediaProject/FFmpeg

因本文编译的 ffmpeg 版本为 4.3.1,因此这里选择版本的时候选择 4.3 版本的最新发布的版本,如下图所示:

2、编译环境

IDE:Visual Studio 2022

二、创建工程

1、新建一个工程文件 ffmpeg431_test

2、编码为了和 ffmpeg 字符串相兼容,字符集这里改为使用多字节字符集

3、将FFmpeg-4.3.r98065 SDK开发包中相关的源文件复制到刚刚创建的工程文件夹内,包括如下文件:

  • 其中 dce_defs.c 所在目录:FFmpeg-4.3.r98065\SMP\ffmpeg
  • 其他文件所在目录:FFmpeg-4.3.r98065\fftools

复制后的结果如下:

4、将刚刚的这些源文件与头文件添加到项目中

5、预编译头选项选择 不使用预编译头

6、点击生成,此时会报很多错误,我们接下来依次解决错误

三、解决编译报错

1、将前面准备好的 ffmpeg-4.3.1-win32-dev 开发库复制到工程目录下并将其改为名 ffmpeg431devw32

2、将 ffmpeg431devw32 开发库头文件路径包含到工程目录内

3、将 ffmpeg431devw32 开发库路径包含到工程目录内

4、将 FFmpeg-4.3.r98065/SMP 目录下的 config.h 文件拷贝到工程目录中

5、将 mfx 目录拷贝到工程目录的 ffmpeg431devw32/include 目录下

mfx 链接:

链接:https://pan.baidu.com/s/1PL1t2zp96uuwVAW3F3Z4Mg

提取码:j377

6、再次编译,此时报错信息如下:

7、将 FFmpeg-4.3.r98065/compat 目录拷贝到工程目录的 ffmpeg431devw32/include 目录下

8、在工程目录的 ffmpeg431devw32/include 目录下新建 libavresample 目录,并将 FFmpeg-4.3.r98065/libavresample/avresample.h 和FFmpeg-4.3.r98065/libavresample/version.h 拷贝到其中

9、将 FFmpeg-4.3.r98065/SMP 目录下的stdatomic.h文件拷贝到 工程目录中


使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c(二)https://developer.aliyun.com/article/1473995

目录
相关文章
|
6天前
|
开发工具
使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c(三)
使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c(三)
21 0
|
6天前
|
Linux
Linux编译FFmpeg
Linux编译FFmpeg
17 0
|
6天前
|
Ubuntu Linux Shell
Android-NDK-clang 编译 FFmpeg
Android-NDK-clang 编译 FFmpeg
19 0
|
6天前
|
移动开发 Unix Linux
ffmpeg编译so
ffmpeg编译so
17 0
|
6天前
|
开发工具
使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c(二)
使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c(二)
16 0
|
6天前
|
Linux 编译器 数据安全/隐私保护
Windows10 使用MSYS2和VS2019编译FFmpeg源代码-测试通过
FFmpeg作为一个流媒体的整体解决方案,在很多项目中都使用了它,如果我们也需要使用FFmpeg进行开发,很多时候我们需要将源码编译成动态库或者静态库,然后将库放入到我们的项目中,这样我们就能在我们的项目中使用FFmpeg提供的接口进行开发。关于FFmpeg的介绍这里就不过多说明。
90 0
|
8月前
|
C++ Windows
FFmpeg入门及编译 3
FFmpeg入门及编译
60 0
|
8月前
|
编解码 API 开发工具
FFmpeg入门及编译 1
FFmpeg入门及编译
104 0
|
8月前
|
API C语言 C++
FFmpeg入门及编译 2
FFmpeg入门及编译
95 0
|
6天前
|
编解码 Ubuntu C++
WebAssembly01--web 编译FFmpeg(WebAssembly版)库
WebAssembly01--web 编译FFmpeg(WebAssembly版)库
32 0

热门文章

最新文章