音视频开发三:Windows环境下FFmpeg编译安装

这篇具有很好参考价值的文章主要介绍了音视频开发三:Windows环境下FFmpeg编译安装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证 。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec。

FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、[Mac OS X](https://baike.baidu.com/item/Mac OS X/470629?fromModule=lemma_inlink)等。

用户既可以使用命令行直接对音视频进行操作(CLI),也可以调用其开源库进行个性化的功能开发(SDK)。

如果要在自己的程序中使用 ffmpeg ,那么使用它的 SDK 是最好的选择。当前 ffmpeg 包含以下几个库:

  • libavcodec : 编/解码
  • libavfilter : 帧级操作(如添加滤镜)
  • libavformat : 文件 I/O 和 封装/解封装
  • libavdevice : 设备视频文件的封装/解封装
  • libavutil : 通用工具集合
  • libswresample : 音频重采样、格式处理、混音等
  • libpostproc : 预处理
  • libswscale : 色彩处理和缩放

FFmpeg编译

为什么要编译它呢?

​ 由于ffmpeg 目前不提供预编译的库文件,而是需要自己下载源码并编译,而且可以自定义配置和优化,比直接下载预编译的二进制的版本更加灵活。

编译安装准备

在 Windows 下,编译需要做的准备如下:

  • 安装并配置 MYSY2
  • 安装 git (可选)
  • ffmpeg 源码

安装 MSYS2 及编译工具链

MSYS2 是 Windows 下的一组编译套件,它可以在 Windows 系统中模拟 Linux 下的编译环境,如使用 shell 运行命令、使用 pacman 安装软件包、使用 gcc (MinGW) 编译代码等。简单来说,使用 MSYS2 ,你可以通过在 Linux 下非常熟悉的各种命令,来编译 Windows 下的软件。

MSYS2 的安装也非常省心,只需要到 MSYS2 官网 下载.exe安装包,管理员身份运行安装即可。

注意安装盘必须是NTFS,路径要全使用 ACSII 字符,不能有空格。建议就安装在默认位置,如果不想装在 C 盘,就直接改下盘符,装在其他盘的根目录。

安装完毕后,开始菜单里就会有下面的程序:

windows 编译 ffmpeg 64位,音视频开发,ffmpeg,linux,音视频

点击它们就会启动一个 shell 窗口,Just like on Linux ! 这个 shell 程序默认是 Mintty,类似 Linux 系统中的 bash shell

MSYS2 支持多个编译器工具链,它们的环境是独立的(可以去安装文件夹查看),

在开始菜单打开MSYS2 MSYS,使用命令pacman -Syu升级所有库

在编译安装FFmpeg之前,先安装FFmpeg编译需要的依赖和工具

pacman -S mingw-w64-x86_64-toolchain  # mingw64编译工具链,win下的gcc
pacman -S base-devel    # 一些基本的编译工具
pacman -S yasm nasm     # 汇编器
pacman -S mingw-w64-x86_64-SDL2 # SDL2 是ffmpeg依赖的,因为没有它ffpaly不能用

安装完毕后,可以输入gcc -v查看 gcc 版本:

windows 编译 ffmpeg 64位,音视频开发,ffmpeg,linux,音视频

最后需要添加环境变量。右击此电脑 -> 属性 -> 高级系统设置 -> 环境变量 -> 选择 Path (用户变量和系统变量都要)-> 编辑 -> 新建,添加编译工具链的路径:

添加环境变量这一步,是为了以后使用其他编辑器或者IDE时,能够找到 MINGW64 的编译工具链。在 MSYS2 中编译 ffmpeg 本身是不需要添加 Windows 的环境变量的。

ffmpeg 源码下载

在 ffmpeg 官网 下载源码,目前最新的版本是 5.1.2 。注意不要下载成 executable files 了,那个是可以直接运行的 CLI 程序。

windows 编译 ffmpeg 64位,音视频开发,ffmpeg,linux,音视频

三个 download 都可以,只是压缩包格式不一样:

windows 编译 ffmpeg 64位,音视频开发,ffmpeg,linux,音视频

下载后解压到一个好找的文件夹即可。

在 MSYS2 的 shell 中,打开源码所在文件夹。

执行编译安装命令

我们编译安装ffmpeg选择使用mingw64终端 (如果你也是64位系统的话)。

windows 编译 ffmpeg 64位,音视频开发,ffmpeg,linux,音视频

  1. ./configure --prefix=/usr/local/ffmpeg --enable-shared --enable-sdl2 --disable-static

    括号中的值都是可选的。

    configure说明
     --prefix=/usr/local/ffmpeg        # 安装位置
     --enable-debug                    # 启动debug调试
     --enable-sdl2					   # 引入SDL2库,ffplay编译必须;
     --enable-static                   # 编译静态库(默认开启)
     --enable-shared                   # 编译动态库(默认关闭)
     --enable-libvpx                   # VP8/VP9 视频编码器
     --enable-libvmaf                  # VMAF视频质量评估工具
     --disable-x86asm                  # 未知
     --enable-gpl                      # 允许使用GPL(默认关闭)
     --enable-nonfree                  # 允许使用非免费的代码, 产生的库和二进制程序将是不可再发行的
     --enable-libx264                  # 启用H.264编码(默认关闭)
     --enable-libfdk-aac               # 使能aac编码(默认关闭)
     --disable-optimizations           # 禁用编译器优化
     --disable-asm                     # 禁用全部汇编程序优化
     --enable-librtmp                  # 使用librtmp拉流(默认关闭)
    

    更多详细说明可查询ffmpeg ./configure参数说明

  2. 编译:make -j 4

    4 表示编译需要用4个线程。

  3. 安装 sudo make install

这一步都安装完成了,在安装目录下的bin目录执行.\ffmpeg.exe -version

windows 编译 ffmpeg 64位,音视频开发,ffmpeg,linux,音视频

设置环境变量

为了能够每次打开的时候,都能执行ffmpeg命令。在配置文件中末尾添加 export PATH=$PATH:/d/repos/ffmpeg/ffmpeg_5.2.1_install/bin这个命令。配置文件就是msys的安装位置/msys64/etc/profile.这个文件和 Linux 下的/etc/profile文件作用是类似的。

ffmpeg 集成x264

libx264 编译安装

ffmpeg 提供了相当多的外部库支持,但是如果要使用的话需要自己编译外部库。

libx264 由 VideoLAN 组织所发布,它是 H.264 的一套性能较好的软编码器实现(不包括解码器)。H.264 (AVC) 是当前较常用的视频编码,目前 H.264 的继任者 H.265 (HEVC) 也渐趋成熟, VideoLAN 也有一套实现 libx265。

  1. 进入x264官网页面下载

    官方建议使用 git 下载源码(下载压缩包再解压应该也是一样的):

    git clone https://code.videolan.org/videolan/x264.git

  2. 进入源码目录

  3. 执行以下命令进行编译和安装

    编译安装过程和ffmpeg相似。

./configure --prefix=安装路径 --enable-shared
make -j 4
make install 

– enable-shared ,同时在系统中生成共享库,方便其他程序调用。

  1. 查看libx264是否安装成功

    到x264的可执行文件目录,执行./x264.exe --version打印类似如下信息,安装成功。

windows 编译 ffmpeg 64位,音视频开发,ffmpeg,linux,音视频

编译ffmpeg库,集成libx264

  1. 检查 PKG_CONFIG_PATH 环境变量是否正确配置

    pkg-config 工具通过 PKG_CONFIG_PATH 环境变量来查找库的 pkg-config 配置文件。ibx264的pkg-config是一个用于管理库依赖的工具。它可以帮助开发者在编译和链接源代码时自动包含库文件,并提供必要的编译器和链接器选项。此外,它还可以与其他开发工具集成,例如Autotools和CMake,以实现更完整和自动化的构建过程。

    可以执行以下命令确认 PKG_CONFIG_PATH 是否包含了 libx264 的 pkg-config 配置文件路径:

    echo $PKG_CONFIG_PATH
    

    如果没有包含,你可以使用以下命令将 libx264 的 pkg-config 配置文件路径添加到 PKG_CONFIG_PATH 中:

     export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/f/software/install/ffmpeg/x264_install/lib/pkgconfig
    
  2. 编译安装ffmpeg

    ./configure --prefix=/f/software/install/ffmpeg/ffmpeg_install \
    --enable-shared --enable-sdl2 --disable-static  --enable-gpl --enable-libx264 \
    --extra-cflags=-I/f/softweg/x264_install/include \
    --extra-ldflags=-L/f/software/install/ffmpeg/x264_install/lib
    
    make -j 4
    
    make install
    

    这里使用了以下参数:

    • 加入--enable-libx264 参数
  • 加入--enable-gpl参数。否则会提示libx264 is gpl and --enable-gpl is not specified

  • –extra-cflags=“-I/f/softweg/x264_install/include”:指定 x264 的头文件路径为 /f/softweg/x264_install/include。

    • –extra-ldflags=“-L/f/software/install/ffmpeg/x264_install/lib”:指定 x264 的库文件路径为/f/software/install/ffmpeg/x264_install/lib,并链接到 libx264.so 动态库文件。

注意: 有一个坑就是 编译安装完成之后,执行ffmpeg、ffplay等命令都没有反应。或者双节ffmpeg.exe 提示 由于找不到libx264-164.dll,无法继续执行代码。重新安装程序可能会解决此问题。这是因为我们libx264和ffmpeg的安装路径不在同一个地方。需要libx264安装目录的bin文件夹下的libx264-164.dll放到ffmpeg安装路径的bin目录下。

参考

fmpeg库编译安装及入门指南(Windows篇)文章来源地址https://www.toymoban.com/news/detail-766002.html

到了这里,关于音视频开发三:Windows环境下FFmpeg编译安装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FFmpeg 音视频开发工具

    目录 FFmpeg 下载与安装 ffmpeg 使用快速入门 ffplay 使用快速入门 1、FFmpeg 是处理音频、视频、字幕和相关元数据等多媒体内容的库和工具的集合。一个完整的跨平台解决方案,用于录制、转换和流式传输音频和视频。 官网:https://www.ffmpeg.org/ 源码:https://github.com/FFmpeg/FFmpeg。

    2024年02月15日
    浏览(54)
  • 音视频开发-ffmpeg介绍-系列一

    目录 一.简介 FFmpeg框架的基本组成包含: 二. FFmpeg框架梳理音视频的流程​编辑 基本概念: 三.ffmpeg、ffplay、ffprobe区别      4.1 ffmpeg是用于转码的应用程序  4.2 fffplay是用于播放的应用程序       4.3 ffprobe是用于查看文件格式的应用程序      4.4 ffmpeg是用于转码的应用程

    2024年02月16日
    浏览(43)
  • 音视频开发---ffmpeg rtmp推流

    推流是将输入视频数据推送至流媒体服务器, 输入视频数据可以是本地视频文件(avi,mp4,flv......),也可以是内存视频数据,或者摄像头等系统设备,也可以是网络流URL。本篇介绍将本地视频文件通过FFmpeg编程以RTMP直播流的形式推送至RTMP流媒体服务器的方法。 推流的网络拓扑

    2024年02月16日
    浏览(78)
  • 音视频剪辑|FFMPEG|windows10下的音视频格式转换,遮挡填充,GIF动图制作,背景音频抽取,替换

    最近对于音视频和图像的处理问题比较感兴趣,但发现很多目前需要的功能要么需要付费但不会过于麻烦,要么比较麻烦,很可能某个功能实现需要安装很多软件 例如,视频转GIF动图,该功能的实现要么使用Photoshop全家桶,要么找在线网站,或者是wps充会员,或者找其它方法

    2024年02月20日
    浏览(56)
  • Qt音视频开发38-ffmpeg视频暂停录制的设计

    基本上各种播放器提供的录制视频接口,都是只有开始录制和结束录制两个,当然一般用的最多的也是这两个接口,但是实际使用过程中,还有一种可能需要中途暂停录制,暂停以后再次继续录制,将中间部分视频不需要录制,跳过这部分不需要的视频,而且录制的视频文件

    2023年04月20日
    浏览(71)
  • 音视频处理 ffmpeg中级开发 H264编码

    libavcodec/avcodec.h 常用的数据结构 AVCodec 编码器结构体 AVCodecContext 编码器上下文 AVFrame 解码后的帧 结构体内存的分配和释放 av_frame_alloc 申请 av_frame_free() 释放 avcodec_alloc_context3() 创建编码器上下文 avcodec_free_context() 释放编码器上下文 解码步骤 avcodec_find_decoder 查找解码器 avcod

    2024年02月01日
    浏览(82)
  • FFMPEG开发快速入坑——附录一:音视频同步

    本章节主要以本地音视频播放为例,简要描述讲解一个基本的播放器中,音视频播放如何实现同步的。 通用媒体播放器框架 其中各个组件模块: 1、Media Demux: 进行媒体文件的解析,分别解析出音频流数据包和视频流数据包。主要使用  libavformat 库中的函数。 2、Video Decoder:

    2024年01月19日
    浏览(53)
  • 音视频开发实战03-FFmpeg命令行工具移植

    作为一个音视频开发者,在日常工作中经常会使用ffmpeg 命令来做很多事比如转码 ffmpeg -y -i test.mov -g 150 -s 1280x720 -codec libx265 -r 25 test_h265.mp4 ,水平翻转视频: ffmpeg -i src.mp4 -vf hflip -acodec copy -vcodec h264 -b 22000000 out.mp4 ,视频截取: ffmpeg -i input.wmv -ss 00:00:30.0 -c copy -t 00:00:10.0 ou

    2024年02月16日
    浏览(77)
  • Qt音视频开发40-ffmpeg采集桌面并录制

    之前用ffmpeg打通了各种视频文件和视频流以及本地摄像头设备的采集,近期有个客户需求要求将整个桌面屏幕采集下来,并可以录制保存成MP4文件,以前也遇到过类似的需求,由于没有搞过,也没有精力去摸索和测试,所以也就一直耽搁着,近期刚好这个需求又来了,定下心

    2023年04月25日
    浏览(64)
  • 音视频开发五:visual studio集成使用FFmpeg

    ffmpeg 官网 - download - 选择Windows系统 - 选择gyan.dev版本- shared版本 在Windows系统上,Gyan.dev和BtbN都提供了FFmpeg的预编译版本。Gyan.dev通常使用MSVC编译器,而BtbN使用MinGW编译器。因此,Gyan.dev的版本可能会更符合Windows标准,而BtbN的版本可能会更加开放和跨平台。 选择 shared版本 各

    2024年02月04日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包