欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > 【FFmpeg】介绍+安装+VisualStudio配置FFMpeg库

【FFmpeg】介绍+安装+VisualStudio配置FFMpeg库

2025/5/16 20:43:05 来源:https://blog.csdn.net/m0_54984588/article/details/147953344  浏览:    关键词:【FFmpeg】介绍+安装+VisualStudio配置FFMpeg库

文章目录

  • 1. 介绍
  • 2. FFmpeg 安装
      • 2.1. windows 下安装
      • 2.2. VS 配置 ffmpeg
          • 配置流程与编译链路的关系
          • dll 找不到问题
      • 2.3. ubuntu 安装

1. 介绍

FFmpeg是一套可以用来记录、处理数字音频、视频,并将其转换为流开源框架,采用LPL或GPL许可证,提供了录制、转换以及流化音视频的完整解决方案。

它的可移植性或者说跨平台特性非常强大,Linux服务器、PC(包括Windows、Mac OS X等)、移动端设备(Android、iOS等移动设备)等平台。mpeg来自视频编码标准MPEG,前缀FF是Fast Forward的首字母缩写;

使用场景

  • 视频编码、解码和转换:FFMPEG 是一个强大的开源音视频处理库,常用于视频编解码、格式转换和流媒体处理等场景。
  • 流媒体服务:FFMPEG 支持音视频数据转换为流媒体格式,并提供了丰富的流媒体功能,适用于搭建流媒体服务器和实时流处理

GStreamer:基于管道的多媒体框架,提供了灵活的插件架构,可方便地集成各种编解码插件。
使用场景:

  1. 多媒体应用开发:GStreamer 是一个功能丰富的多媒体框架,支持音视频的捕获、处理和播放,适用于开发多媒体应用程序。
  2. 嵌入式系统:GStreamer 在嵌入式系统上有较好的应用,可以实现轻量级的音视频处理和流媒体以输。
  3. 优点:适应各种多媒体处理需求。

核心模块

  • AVFormat:负责多媒体文件的封装与解封装,要掌握常见封装格式(如 MP4、FLV、MKV 、TS 等)和网络协议封装格式(如 RTMP、RTSP、HLS 等) 。熟悉解复用流程,像使用avformat_open_input打开输入文件、avformat_find_stream_info获取流信息、av_read_frame读取音视频帧等接口的使用。
  • AVCodec:涵盖众多编解码格式。对于视频编码(如 H.264、H.265 、MPEG - 4 等 )和音频编码(如 AAC、MP3 等 ),需了解编码原理、参数设置(如码率、帧率、分辨率等对编码质量和文件大小的影响 )。掌握编解码流程,包括解码器 / 编码器的初始化(avcodec_open2 )、发送编码数据(avcodec_send_packet )、接收解码帧(avcodec_receive_frame )等操作。
  • AVFilter:提供音视频滤镜处理框架。学习视频滤镜(如裁剪、缩放、旋转、添加字幕、调色等 )和音频滤镜(如音量调整、均衡器设置等 )的使用,以及滤镜图(filtergraph )的构建和应用 。
  • AVUtil:提供基础工具函数。重点掌握内存管理函数(av_mallocav_free 等 ),以确保程序内存使用安全;了解错误处理机制(av_strerror 等 ),方便排查问题;熟悉时间戳处理、数据结构定义等内容。

常用工具

  • ffmpeg:作为核心编解码工具,掌握其基本命令格式,如ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}... 。熟悉常用选项,像输入输出文件指定(-i )、音频编码设置(-acodec )、视频编码设置(-vcodec )、分辨率调整(-s )、时长控制(-t )等 。学会常见应用场景,如格式转换、音视频提取、剪辑、合并等操作的命令编写。
  • ffplay:简单媒体播放器,了解其播放控制方式,包括常用快捷键(如Space/p 播放 / 暂停、q/Esc 退出、f 全屏切换等 )。掌握其命令行选项,如指定播放起始时间(-ss )、禁止音频 / 视频播放(-an/-vn )等 。
  • ffprobe:多媒体分析工具,学会使用它获取媒体文件元数据(如编码格式、时长、分辨率、码率等 ),通过ffprobe -show_streams -show_format 文件名 等命令来分析媒体文件信息。

2. FFmpeg 安装

2.1. windows 下安装

https://www.gyan.dev/ffmpeg/builds/官网链接

  1. 解压:

    1. bin:FFmpeg 可执行文件所在的文件夹,运行 FFmpeg 的所有命令都需通过此目录下的文件
    2. doc:文档资料
    3. presets:预设的格式和编码方案
  2. 进入 bin 目录,可以看到 FFmpeg 的三个核心可执行文件:ffmpeg.exeffplay.exeffprobe.exe

  3. 配置环境变量:为了方便在命令行中直接调用 FFmpeg,需要将其添加到系统的环境变量中

  4. 如果要更改环境变量,要重启 cmd;

  5. 测试安装,显示如下表示安装成功

2.2. VS 配置 ffmpeg

在这里插入图片描述

  1. 创建 vs windows 项目
  2. 添加包含目录向编译器提供头文件(.h)的搜索路径;
  3. 库目录(lib) → 向链接器(Linker)提供静态库文件(.lib)的搜索路径
  4. 附加依赖项 → 明确告知链接器需要链接的具体静态库文件。
配置流程与编译链路的关系
  1. 编译阶段(Compiler)

    1. 使用 附加包含目录 中的头文件验证函数调用合法性(语法检查)。
    2. 生成目标文件(.obj),但函数地址尚未绑定(符号表中标记为未解析引用)。
  2. 链接阶段(Linker)

    1. 通过 附加库目录 定位到静态库文件。
    2. 根据 附加依赖项 中指定的库文件(avcodec.lib等),将目标文件中的未解析符号与库中的函数实现绑定。
    3. 最终生成可执行文件(.exe),其中包含FFmpeg库的二进制代码。
  3. 运行时(Runtime)

    1. 动态链接库(.dll)需通过系统路径或项目环境变量(如PATH=D:\ffmpeg\bin)加载。
错误类型技术原因解决方案
C1083: 无法打开头文件头文件路径未包含或路径错误检查附加包含目录

是否指向include

文件夹
LNK1104: 无法打开xxx.lib库目录路径错误或文件缺失检查附加库目录

路径和.lib

文件是否存在
LNK2019: 未解析的外部符号未链接对应库或库版本不兼容附加依赖项

中添加缺失的库文件名
dll 找不到问题

方法 1:将所需的动态库复制到项目可执行文件的路径,因为动态库是在运行时候加载的

方法 2:修改系统环境变量(全局生效)

通过修改PATH环境变量实现DLL全局加载,本质是利用Windows动态库搜索机制,将FFmpeg的bin目录注册为系统级资源路径。这种方法牺牲了部分安全性(如DLL劫持风险 ),但大幅提升了开发便利性,尤其适合需要长期维护多个FFmpeg项目的场景。

  1. 添加FFmpeg的bin目录到PATH
  • 按下Win + S搜索“环境变量” → 编辑系统环境变量 → 环境变量
  • 在 系统变量 中双击Path → 新建 → 输入FFmpeg的bin路径(如D:\ffmpeg\bin
  • 重启Visual Studio,所有项目运行时自动加载该路径下的DLL。
  1. 编译时链接 vs 运行时加载
  • 静态库(.lib)在编译时会被直接嵌入到最终的可执行文件中,链接器需要在编译阶段明确知道其路径和名称 3 20。
  • 环境变量(如PATH)主要用于运行时动态库(.dll)的搜索路径,而静态库无需运行时加载 12 14。
  1. 静态库的依赖关系固定性
  • 静态库的代码在编译后成为程序的一部分,其依赖关系在链接时已确定,无法通过环境变量动态调整

2.3. ubuntu 安装

# 更新源
sudo apt update# 添加源
sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next # 安装ffmpeg
sudo apt-get install ffmpeg# 查看版本
ffmpeg -version# 查看编码器和解码器
ffmpeg -encoders

安装ffmpy

pip install ffmpy==0.2.2   # 需要权限就添加sudo

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词