专栏首页音视频直播技术专家Windows 下使用 ffmpeg 库

Windows 下使用 ffmpeg 库

今天我们来聊聊如何在Windows下使用ffmpeg库进行音视开发。一般情况下我很少在Windows下使用ffmpeg, 最主要的原因是在Windows下编译ffmpeg没有在Linux/Mac下编译方便。

不过相对来说还是使用 Windows 的同学比较多,为了方便他们可以更顺利的学习音视频开发,因此今天我们就来看看如何在 Windows 搭建使用 ffmpeg 的开发环境。

在Windows下搭建 ffmpeg 开发环境可以分为以下几个步骤:

  • 编译出 Windows可以使用的ffmpeg
  • 使用VS创建工程时,选择好 x86 或 x64 架构指令集
  • 指定 ffmpeg 头文件目录路径
  • 指定 ffmpeg 库文件目录路径
  • 指定你要使用的 ffmpeg库
  • 拷贝指定的 ffmpeg DLL库 文件到执行程序目录

下面我们就对上面的步骤做下详细介绍。

Windows 下编译 ffmpeg

我们要想使用 ffmpeg,就一定要有在 Windows 下可以使用的 ffmpeg 库。这个库你可以通过官网直接下载,也可以通过 ffmpeg 源码进行编译。

相对来说,通过 ffmpeg 源码编译生成的库更为灵活,比如你想增加fdk_aac、x264等模块会非常方便,只要在编译时打开选项就好了,而使用官网的 ffmpeg 库那只能使用默认设置了。

不过,在Windows下编译ffmpeg源码还是满麻烦的一件事儿,要配置一堆环境。总的来说,在Windows下有三种编译 ffmpeg 的方式:

  • Cygwin 方式编译 ffmpeg
  • Msys2 方式编译 ffmpeg
  • Msys2 + VS 方式编译 ffmpeg

其中前两种方式是类似的,都是以 Linux 的方式来编译。而最后一种方式最为复杂,但这种方式编译出的 ffmpeg 是最符合 Windows 风格的。

VS中选择 x86 或 x64

当 ffmpeg 库编译好之后,我们该如何使和它呢?我们以 VS 来例来进行一下讲解。

第一步是在VS创建的工程中要选择使用x86还是使用x64。它们有什么区别呢?通俗的讲,x86是编译出的是32位系统可执行程序 ,而x64编译出的是 64位系统可执行的程序。

由于 Windows 是向下兼容的,所以你编译出的x86程序是可以跑在 64 位系统上的。相反如果你选择输出是x64的话,则它只能跑在64位系统上,在 32 位系统上是无法运行的。

但凡事儿有利有弊,如果你编译出的是x86程序,虽然它可以在x64位系统上运行,但它的运行速度要比编译出的x64程序运行的慢很多。由于目前大多数系统都是64位的了,所以我建议尽可以的编译成 x64 程序。

另外需要注意的是,我们在选择 x86 或 x64时,也要注意是否与我们前面编译的 ffmpeg 是一致的?如果你的 ffmpeg 编译出的是 x86 的,在 VS 中也只能选择输出是x86程序。

指定 ffmpeg 头文件路径

选择好输出是 x86 或 x64 之后,接下来我们就要给工程指定 ffmpeg 的头文件路径了。

实际上,无论是 VS 还是还是使用 Linux/Mac 下的 gcc/clang进笔编译,它们在编译时都遵循相同的原则。

我们来举个例子,如果你对 Linux 特别熟悉的话,你应该知道在 Linux 系统下编译代码的命令如下:

gcc -g -o 可执行程序 源码 -I xxxx -L xxxx -lxxx 

其中,-I 指明你要引用的库的头文件路径;-L指明你使用库的路径; -l 指时具体使用那个库。

VS也不例外,我们看一下 Windows 是在哪儿设置 ffmpeg 头文件吧,如下图所示:

第一步,找到你的工程

第二步,右键项目

第三步,点击属性

第四步,修改 C++/General 中的 Additional Include Directories

至此,我们就将 ffmpeg 的头文件路径指定好了。

指定 ffmpeg 库路径

指定 ffmpeg 库文件路径与指定 ffmpeg 头文件路径是类似的。过程如下:

  • 首先右键点击项目 -> 属性。
  • 然后在弹出的属性窗口中选择 Linker 项,如图所示:

Additional Library Directories 中添加 ffmpeg 库路径。这样就将ffmpeg 库文件路径设置好了。

指定要使用的 ffmpeg 库文件

接下来我们来看看如何指定要使用的 ffmpeg 库文件 。编译好的 ffmpeg 有许多库文件,如libavutil, libavformat …,每一个库都有其特定作用。

在我这个例子中,由于我用到了音频设备,所以要引入 avdevice,我要对采集到的音频进行编码,所以还需要 avcodec等。因此我的工程中需要加入以下几个库: avutil, avformat, avdevice, avcodec 和 swresample。下面我们就看看该如何设置吧。

拷贝DLL文件到执行目录

最后一步就是将编译好的 ffmpeg 库文件放到编译后的可执行文件目录下就好了。直接上图了:

经过以上步骤,我们就将Windows下使用 ffmpeg 的音视频环境搭建好了。希望本文能对你有所帮助!

参考资料

音视频小白系统入门课

FFmpeg音视频核心技术精讲与实战

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 音视频小白系统入门常见问题解决办法

    同学们在学习视频课小白系统入门这门课的过程中,经常遇到一些问题,这里总结一些最常见的问题,供大家参考:

    音视频_李超
  • ffmpeg中的时间戳与时间基

    在开发多媒体播放器或直播系统时,音视频的同步是非常关键且复杂的点。要想把音视频同步搞明白,我们必须要了解一些基本的知识。只有了解了这些基本知识,才能为你打下理解...

    音视频_李超
  • Windows下编译ffmpeg

    在Linux/Mac下编译 ffmpeg是非常方便的。但要在 Windows下编译 ffmpeg还真要花点时间。不过为了满足学员的要求,也方便自己不再被这类问题...

    音视频_李超
  • 在有root权限,或者没有root权限情况下,linux 安装ffmpeg等软件的方式

    http://ffmpeg.org/releases/ 查看所需要的ffmpeg版本

    水球喵子
  • fmpeg配置

    下载地址(64位windows):https://ffmpeg.zeranoe.com/builds/win64/static/

    用户6132528
  • FFmpeg命令行使用手册-protocols协议汇总篇

    本文参考自ffmpeg官方文档:http://ffmpeg.org/ffmpeg-protocols.html

    eguid
  • Centos7.6 编译安装ffmpeg4

    它作为迄今为止最流行的一个开源多媒体框架之一,FFmpeg有两种基本使用方式——作为库或者作为工具,其中后者的使用场景更多,同时它也被称为多媒体开发的“瑞士军刀...

    阿dai学长
  • ffmpeg增加h264编解码功能模块方法

    在写代码的过程中,经常需要利用ffmpeg进行h264编解码,ffmpeg默认是不支持h264编解码的,需要在编译ffmpeg时增加支持h264编解码功能模块。

    EasyNVR
  • ffmpeg 安装,转视频格式为m3u8,压缩视频

    本文介绍 ffmpeg 的安装,转视频格式为m3u8,压缩视频 ## ffmpeg 安装 直接安装: apt-get install ffmpeg 运行  f...

    smy
  • 使用静态ffmpeg二进制文件秒安装ffmpeg

    说明:我们安装很多视频程序的时候都需要用到ffmpeg,差不多都喜欢用编译安装,过程很慢,而且有的系统会因为一些依赖出现很多问题,导致安装失败。有时候就算ffm...

    zhangdd

扫码关注云+社区

领取腾讯云代金券