FFmpeg入门及编译 2

简介: FFmpeg入门及编译

六、VS 项目中引用 FFmpeg 库

编译好 FFmpeg 库后,下面我们就可以在 VS 中引用它了。

1、创建新项目

2、控制台应用

3、确定项目名称及位置


4、点击创建

5、引入FFmpeg 头文件

项目右键 -> 属性 -> C/C++ -> 常规 -> 附加包含目录 中添加 FFmpeg 头文件所在路径。

6、指定库文件位置

首先说明一点,我编译出来的库文件存在于 D:\msys64\usr\local\ffmpeg\bin 目录下

项目右键 -> 属性 -> 链接器 -> 常规 -> 附加库目录 中添加 FFmpeg 库所在路径。

7、指定使用哪个库

项目右键 -> 属性 -> 链接器 -> 输入 -> 附加依赖项 中指定你所用到的 FFmpeg 库

指定以下所有库:

avcodec.lib
avdevice.lib
avfilter.lib
avformat.lib
avutil.lib
postproc.lib
swresample.lib
swscale.lib

8、运行编译好的程序

当上面这此工作完成后,我们就可以在 main(…) 函数中调用 FFmpeg API 了,如调用 FFmpeg 库中的日志函数:

#include <iostream>
extern "C" {
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
}
int main()
{
    av_log_set_level(AV_LOG_DEBUG);
    av_log(NULL, AV_LOG_INFO, "Hello World!\n");
    return 0;
}

上述代码中,调用了 FFmpeg 中的两个 API,分别是 av_log_set_level(…) 以及 av_log(…),这两个函数都是 FFmpeg avutil 库中的 API。所以在使用这两个 API 之前,我们要在 main.c 中需要通过 #include 关键字将 libavtuil/log.h 这个头文件引入进来。

  • 此外,由于 FFmpeg 是 C 语言库,而我们用 VS 创建的是 C++ 工程,所以在引入头文件时需要加上 extern “C” 关键字,否则的话 VS 无法将其成功编译。

执行出现了这样的报错,其原因是在运行时无法找到需要的动态库。

解决方案一:

将 D:\msys64\usr\local\ffmpeg\bin 目录下的 avutil-58.dll 文件拷贝到 C:\Windows\System32 目录下

拷贝结果如下:

再次执行程序,可以看到如下的结果

解决方案二:

只需将我们之前编译好的 FFmpeg 库,即提示的无法找到的 .dll 库,拷贝到执行程序的同一目录下,这样执行程序就可以找到该库并正确执行了。

七、编译 FFmpeg 依赖库

很多时候我们在编译 FFmpeg 库时还要增加一些其它库,如 SDL、x264 等,如果要将这些库添加到 FFmpeg 中,首先我们要编译出 Windows 下可用的对应库。

1、编译 SDL

①、下载 SDL 源码

首先从 github 上获取 SDL 源码,命令如下:

git clone https://github.com/libsdl-org/SDL.git
git checkout release-2.26.x

需要注意的是,SDL现在已经发布了3.0版本,而ffmpeg目前只能用SDL2版本,所以在拉取代码后,需要切换到2.26这个版本

可以到这里自取 SDL-2.26.x

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

提取码:qqbh

②、下载 CMake

下载好 SDL2 源码后,我们需要使用 CMake 为其生成 VS 工程,并将其安装到 Windows 系统上。

可以到这里自取 CMake 安装包

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

提取码:et4t

关于安装 CMake 这里,针对所有用户把 CMake 目录安装到系统目录

并将其安装到 D:\CMake\ 目录下

③、编译 SDL

之后打开 CMake-GUI,在 CMake-GUI 中指定 SDL 源码所在路径(D:/Git-Space/SDL)以及编译后的输出路径(D:/CMake/usr/local/)

随后执行

Configure -> Generate -> Open Project

生成 VS 工程。有了 VS 工程,我们就可以通过 VS2022 来编译 SDL 了。

分别在 Release 和 Debug 模式下,重新生成一下 All_BUILD 子项目。

没啥问题的话 SDL 就编译好了,你可以去 D:\Project\VS_Project\sdl_test\Debug 和 D:\Project\VS_Project\sdl_test\Release 目录下看看有没有对应的 lib 文件


D:\CMake\usr\local\sdl\Debug 目录如下:

D:\Project\VS_Project\sdl_test\Release 目录如下

为了满足要求,我们需要在指定输出目录下创建 lib 目录,并将 SDL2.lib 和 SDL2.dll 文件拷贝到 lib 目录下。同时在 lib 目录下创建 pkgconfig 目录,将 sdl2.pc 文件拷贝到该目录中。

最终完整的目录结构如下所示:

/usr/local/sdl2
 |------------ lib
 |              |-- sdl2.lib
 |              |-- sdl2.dll
 |              |-- pkgconfig
 |                     |----- sdl2.pc
 |------------ include

此外,我们还要修改 sdl2.pc 中的内容,将其中的库路径修改为指定的输出路径

目录
相关文章
|
7月前
|
开发工具
使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c(三)
使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c(三)
101 0
|
2月前
|
缓存 并行计算 Ubuntu
Jetson 学习笔记(十一):jetson agx xavier 源码编译ffmpeg(3.4.1)和opencv(3.4.0)
本文是关于在Jetson AGX Xavier上编译FFmpeg(3.4.1)和OpenCV(3.4.0)的详细教程,包括编译需求、步骤、测试和可能遇到的问题及其解决方案。还提供了Jetson AGX Xavier编译CUDA版本的OpenCV 4.5.0的相关信息。
93 4
Jetson 学习笔记(十一):jetson agx xavier 源码编译ffmpeg(3.4.1)和opencv(3.4.0)
|
2月前
|
Ubuntu 应用服务中间件 nginx
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
本文是关于Ubuntu系统中使用ffmpeg 3.2.16源码编译OpenCV 3.4.0的安装笔记,包括安装ffmpeg、编译OpenCV、卸载OpenCV以及常见报错处理。
216 2
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
|
2月前
|
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开发知识可参考相关书籍。
116 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
7月前
|
存储 编解码 缓存
FFmpeg编程入门
FFmpeg编程入门
94 1
|
3月前
|
内存技术
速通FFmpeg入门
速通FFmpeg入门
42 5
|
7月前
|
Linux
Linux编译FFmpeg
Linux编译FFmpeg
157 0
|
6月前
|
存储 编解码 Linux
rodert教你学FFmpeg实战这一篇就够了 - 音视频处理入门篇
rodert教你学FFmpeg实战这一篇就够了 - 音视频处理入门篇
75 1
|
6月前
|
存储 编解码 自然语言处理
一篇文章讲明白FFmpeg从入门到精通:SEI那些事
一篇文章讲明白FFmpeg从入门到精通:SEI那些事
170 0
|
6月前
|
Ubuntu
蓝易云 - Ubuntu18.04安装编译ffmpeg库
现在,你应该已经在你的Ubuntu 18.04系统上成功安装和编译了FFmpeg库。你可以通过运行 `ffmpeg -version`来验证安装是否成功。
79 0

热门文章

最新文章