Conan的安装与使用参考之前的文章:Conan简单使用

一、Conan编译ffmpeg

1.1 Conan的配置文件

创建配置文件:C:\Users\wujh\.conan2\profiles\vs2019

[settings]
arch=x86_64
build_type=Release
compiler=msvc
compiler.cppstd=14
compiler.runtime=dynamic
compiler.version=192
os=Windows

解析说明:

设置项说明
archx86_64目标架构为 64 位(x86_64)。
build_typeRelease构建类型为 Release(优化模式,非调试)。
compilermsvc使用 Microsoft Visual C++ 编译器。
compiler.cppstd14C++ 标准版本为 C++14。
compiler.runtimedynamic使用动态运行时库(MD/MDd)。
compiler.version192MSVC 编译器版本,对应 Visual Studio 2019(版本号 192.x)。
osWindows目标操作系统为 Windows。

1.2 在项目中创建conanfile.txt文件

查询库的版本:conancenter

conanfile.txt文件内容:

[requires]
ffmpeg/4.4.3[options]
ffmpeg/*:shared=True
ffmpeg/*:with_libx264=True
ffmpeg/*:with_libx265=True
ffmpeg/*:with_libfdk_aac=True
ffmpeg/*:with_libmp3lame=Trueffmpeg/*:with_libvpx=False
ffmpeg/*:with_openjpeg=False
ffmpeg/*:with_openh264=False
ffmpeg/*:with_vorbis=False
ffmpeg/*:with_opus=False
ffmpeg/*:with_libwebp=False
ffmpeg/*:with_libaom=False
ffmpeg/*:with_ssl=False[generators]
CMakeDeps
CMakeToolchain[layout]
cmake_layout

说明:

  • requires节下,指定库和其版本号。
  • options节下,指定库的选项
  • generators节,指定生成器设置
    • CMAkeDeps 生成库的查找文件 Findxxx.cmake
    • CMakeToolchain 配置工具链
  • layout节下,指定项目目录布局,cmake_layout标准的cmake项目目录结构

1.3 ffmpeg的Conan选项

分类Conan 选项对应 ./configure 参数说明
FFmpeg 库ffmpeg/*:shared=True--enable-shared / --disable-shared编译动态库(True)或静态库(False)
ffmpeg/*:avdevice=True--enable-avdevice / --disable-avdevice启用 FFmpeg 的设备处理模块
ffmpeg/*:avcodec=True--enable-avcodec / --disable-avcodec启用 FFmpeg 的编解码模块
ffmpeg/*:avformat=True--enable-avformat / --disable-avformat启用 FFmpeg 的封装/解封装模块
ffmpeg/*:swresample=True--enable-swresample / --disable-swresample启用音频重采样模块
ffmpeg/*:swscale=True--enable-swscale / --disable-swscale启用视频缩放和像素格式转换模块
ffmpeg/*:postproc=True--enable-postproc / --disable-postproc启用视频后处理模块
ffmpeg/*:avfilter=True--enable-avfilter / --disable-avfilter启用音视频过滤器模块
视频编码ffmpeg/*:with_libx264=True--enable-libx264 / --disable-libx264启用 H.264 编码支持(基于 libx264)
ffmpeg/*:with_libx265=True--enable-libx265 / --disable-libx265启用 H.265/HEVC 编码支持(基于 libx265)
ffmpeg/*:with_libvpx=True--enable-libvpx / --disable-libvpx启用 VP8/VP9 编码支持(基于 libvpx)
ffmpeg/*:with_libwebp=True--enable-libwebp / --disable-libwebp启用 WebP 编码支持(基于 libwebp)
ffmpeg/*:with_openjpeg=True--enable-libopenjpeg / --disable-libopenjpeg启用 JPEG 2000 编码支持(基于 openjpeg)
ffmpeg/*:with_openh264=True--enable-libopenh264 / --disable-libopenh264启用 H.264 编码支持(基于 openh264)
ffmpeg/*:with_libaom=True--enable-libaom / --disable-libaom启用 AV1 编码支持(基于 libaom)
ffmpeg/*:with_libsvtav1=True--enable-libsvtav1 / --disable-libsvtav1启用 AV1 编码支持(基于 SVT-AV1)
ffmpeg/*:with_libdav1d=True--enable-libdav1d / --disable-libdav1d启用 AV1 解码支持(基于 libdav1d)
音频编码ffmpeg/*:with_libmp3lame=True--enable-libmp3lame / --disable-libmp3lame启用 MP3 编码支持(基于 libmp3lame)
ffmpeg/*:with_libfdk_aac=True--enable-libfdk-aac / --disable-libfdk-aac启用 AAC 编码支持(基于 libfdk-aac)
ffmpeg/*:with_opus=True--enable-libopus / --disable-libopus启用 Opus 音频编码支持(基于 libopus)
ffmpeg/*:with_vorbis=True--enable-libvorbis / --disable-libvorbis启用 Vorbis 音频编码支持(基于 libvorbis)
其他常用ffmpeg/*:with_sdl=False--enable-sdl / --disable-sdl启用或禁用 SDL 支持(用于 ffplay 等工具)
ffmpeg/*:with_freetype=True--enable-libfreetype / --disable-libfreetype启用 FreeType 字体渲染支持
ffmpeg/*:with_programs=True--enable-programs / --disable-programs编译 FFmpeg 的命令行工具(如 ffmpeg、ffplay、ffprobe)
ffmpeg/*:disable_everything=False--disable-everything禁用所有默认组件(False 表示不禁用)
ffmpeg/*:disable_all_encoders=False--disable-encoders禁用所有编码器(False 表示不禁用)
ffmpeg/*:enable_encoders=True--enable-encoders启用所有编码器
ffmpeg/*:disable_all_decoders=False--disable-decoders禁用所有解码器(False 表示不禁用)
ffmpeg/*:enable_decoders=True--enable-decoders启用所有解码器
ffmpeg/*:disable_all_hardware_accelerators=False--disable-hwaccels禁用所有硬件加速(False 表示不禁用)
ffmpeg/*:enable_hardware_accelerators=True--enable-hwaccels启用硬件加速支持
ffmpeg/*:disable_all_muxers=False--disable-muxers禁用所有封装器(False 表示不禁用)
ffmpeg/*:enable_muxers=True--enable-muxers启用所有封装器
ffmpeg/*:disable_all_demuxers=False--disable-demuxers禁用所有解封装器(False 表示不禁用)
ffmpeg/*:enable_demuxers=True--enable-demuxers启用所有解封装器
ffmpeg/*:disable_all_parsers=False--disable-parsers禁用所有解析器(False 表示不禁用)
ffmpeg/*:enable_parsers=True--enable-parsers启用所有解析器
ffmpeg/*:disable_all_bitstream_filters=False--disable-bsfs禁用所有比特流过滤器(False 表示不禁用)
ffmpeg/*:enable_bitstream_filters=True--enable-bsfs启用所有比特流过滤器
ffmpeg/*:disable_all_protocols=False--disable-protocols禁用所有协议(False 表示不禁用)
ffmpeg/*:enable_protocols=True--enable-protocols启用所有协议
ffmpeg/*:disable_all_devices=False--disable-devices禁用所有设备(False 表示不禁用)
ffmpeg/*:disable_all_input_devices=False--disable-indevs禁用所有输入设备(False 表示不禁用)
ffmpeg/*:enable_input_devices=True--enable-indevs启用所有输入设备
ffmpeg/*:disable_all_output_devices=False--disable-outdevs禁用所有输出设备(False 表示不禁用)
ffmpeg/*:enable_output_devices=True--enable-outdevs启用所有输出设备
ffmpeg/*:disable_all_filters=False--disable-filters禁用所有过滤器(False 表示不禁用)
ffmpeg/*:enable_filters=True--enable-filters启用所有过滤器
ffmpeg/*:with_asm=True--enable-asm / --disable-asm启用汇编优化
ffmpeg/*:with_zlib=True--enable-zlib / --disable-zlib启用 zlib 压缩支持
ffmpeg/*:with_bzip2=True--enable-bzlib / --disable-bzlib启用 bzip2 压缩支持
ffmpeg/*:with_lzma=True--enable-lzma / --disable-lzma启用 LZMA 压缩支持
ffmpeg/*:with_libiconv=True--enable-libiconv / --disable-libiconv启用 libiconv 字符编码转换支持
ffmpeg/*:with_fontconfig=False--enable-libfontconfig / --disable-libfontconfig启用或禁用 fontconfig 支持
ffmpeg/*:with_fribidi=False--enable-libfribidi / --disable-libfribidi启用或禁用 fribidi 双向文本支持
ffmpeg/*:with_harfbuzz=False--enable-libharfbuzz / --disable-libharfbuzz启用或禁用 harfbuzz 文本整形支持
ffmpeg/*:with_zeromq=False--enable-libzmq / --disable-libzmq启用或禁用 ZeroMQ 支持
ffmpeg/*:with_ssl=openssl--enable-openssl / --disable-openssl启用 OpenSSL 支持(用于安全协议)
ffmpeg/*:with_soxr=False--enable-libsoxr / --disable-libsoxr启用或禁用 SoX 重采样支持

说明:

  • FFmpeg 库:FFmpeg 核心模块,负责音视频处理、转换和过滤。
  • 视频编码:支持 H.264、H.265、VP8/VP9、WebP、JPEG 2000、AV1 等视频编码格式。
  • 音频编码:支持 MP3、AAC、Opus、Vorbis 等音频编码格式。
  • 其他常用:包括硬件加速、协议、设备、过滤器、压缩库、字体渲染、命令行工具等功能。

查询库的版本:ffmpeg/7.1.1
在这里插入图片描述

1.4 设置cmd终端代理

临时设置代理(仅当前会话有效)

# 设置HTTP和HTTPS代理
set http_proxy=http://127.0.0.1:11819
set https_proxy=http://127.0.0.1:11819# 验证代理是否生效
curl https://www.google.com# 清除代理设置
set http_proxy=
set https_proxy=

永久设置代理(对所有会话有效)

# 设置HTTP和HTTPS代理
setx http_proxy "http://127.0.0.1:11819"
setx https_proxy "http://127.0.0.1:11819"# 清除代理设置
setx http_proxy ""
setx https_proxy ""

1.5 编译

# 查看vs2019配置文件
conan profile show -pr=vs2019# 清理缓存
conan cache clean "*"      # 清理所有编译缓存conan remove "ffmpeg*" -c  # 清理ffmpeg缓存(包括源码)
conan remove "*" -c        # 清理所有缓存(包括源码)# 安装依赖库
conan install . --build=missing  --profile:host=vs2019 --profile:build=vs2019

在这里插入图片描述
在这里插入图片描述

二、VSCode使用ffmpeg库

项目目录结构:

在这里插入图片描述

main.c文件内容:

#include <stdio.h>
#include "libavcodec/avcodec.h"
#include "libavdevice/avdevice.h"
#include "libavfilter/avfilter.h"
#include "libavformat/avformat.h"
int main()
{printf("avcodec version is %u \n",avcodec_version());printf("avdevice version is %u \n",avdevice_version());printf("avfilter version is %u \n",avfilter_version());printf("avformat version is %u \n",avformat_version());return 0;
}

CMakeLists.txt文件内容:

cmake_minimum_required(VERSION 3.15)
project(ffmpeg_test)# 包含 Conan 生成的工具链文件
include(${CMAKE_BINARY_DIR}/generators/conan_toolchain.cmake)# 查找 FFmpeg 包
find_package(ffmpeg REQUIRED)# 设置可执行文件输出目录为 bin  
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin)# 创建可执行文件
add_executable(ffmpeg_test src/main.c)# 链接 FFmpeg 的必要组件
target_link_libraries(ffmpeg_test PRIVATEffmpeg::avutilffmpeg::swresampleffmpeg::swscaleffmpeg::avcodecffmpeg::avformatffmpeg::avfilterffmpeg::avdeviceffmpeg::postproc
)

构建命令

# 生成构建系统(在build目录下执行)
cmake ..# 编译(在build目录下执行)
cmake --build . --config Release

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/84124.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/84124.shtml
英文地址,请注明出处:http://en.pswp.cn/web/84124.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

社群经济视域下开源链动2+1模式与AI智能名片赋能S2B2C商城小程序的创新发展研究

摘要&#xff1a;在数字经济蓬勃发展的背景下&#xff0c;社群经济作为连接用户情感与价值反哺的新型经济形态&#xff0c;正通过技术创新与模式重构实现深度演化。本文基于社群经济“创造有价值连接”的本质特征&#xff0c;系统探讨“开源链动21模式”“AI智能名片”与“S2B2…

【计算机网络】——reactor模式高并发网络服务器设计

&#x1f525;个人主页&#x1f525;&#xff1a;孤寂大仙V &#x1f308;收录专栏&#x1f308;&#xff1a;计算机网络 &#x1f339;往期回顾&#x1f339;&#xff1a;【计算机网络】非阻塞IO——epoll 编程与ET模式详解——(easy)高并发网络服务器设计 &#x1f516;流水不…

Uniapp跨端兼容性全方位解决方案

在当今多端融合的移动互联网时代&#xff0c;Uniapp作为一款优秀的跨平台开发框架&#xff0c;已成为许多开发者的首选。然而&#xff0c;真正的挑战在于如何优雅地处理不同平台之间的差异。本文将全面剖析Uniapp跨端开发的兼容性处理方案&#xff0c;提供从基础到高级的完整解…

迅为RK3576开发板NPUrknn-toolkit2环境搭建和使用docker环境安装

开发板采用核心板底板结构&#xff0c;在我们的资料里提供了底板的原理图工程以及PCB工程&#xff0c;可以实现真正意义上的裁剪、定制属于自己的产品&#xff0c;满足更多应用场合。 迅为针对RK3576开发板整理出了相应的开发流程以及开发中需要用到的资料&#xff0c;并进行详…

什么是 OpenFeigin ?微服务中的具体使用方式

什么是Feign&#xff1f; Feign 是一种声明式的 HTTP 客户端框架&#xff0c;主要用于简化微服务架构中服务之间的远程调用&#xff0c;也可以通过定义接口和注解的方式调用远程服务&#xff0c;无需手动构建 HTTP 请求或解析响应数据。Spring Cloud 对 Feign 进行了增强&…

对抗性提示:进阶守护大语言模型

人工智能模型正快速进化 —— 变得更具帮助性、更流畅&#xff0c;并且更深入地融入我们的日常生活和商业运营中。但随着其能力的提升&#xff0c;风险也在增加。在维护安全可信的人工智能方面&#xff0c;最紧迫的挑战之一是对抗性提示&#xff1a;这是一种微妙且通常富有创意…

运营商频段

以下是三大运营商&#xff08;中国移动、中国电信、中国联通&#xff09;及中国广电的 5G 主要频段 及其所属运营商的整理表格&#xff1a; 运营商频段上行频率 (MHz)下行频率 (MHz)带宽备注广电n28703-733758-788230MHz移动共享n794900-4960-60MHz-移动n412515-2675-160MHz-n7…

项目拓展-Apache对象池,对象池思想结合ThreadLocal复用日志对象

优化日志对象创建以及日志对象复用 日志对象上下文实体类 traceId 请求到达时间戳 请求完成时间戳 请求总共耗费时长 get/post/put/delete请求方式 Http状态码 原始请求头中的所有键值对 请求体内容 响应体内容 失败Exception信息详细记录 是否命中缓存 package c…

Javaweb - Vue入门

Vue是一款用于构建用户界面的渐进式的JavaScript框架。 使用步骤 引入Vue模块&#xff0c;创建Vue的应用实例&#xff0c;定义元素&#xff0c;交给Vue控制。 一、引入Vue模块 因为使用的是模块化的JavaScript&#xff0c;因此在script标签内要声明一个属性&#xff1a;typ…

C++ 标准模板库各个容器的应用场景分析

C 标准模板库&#xff08;STL&#xff09;中的容器分为序列式容器、关联式容器和无序容器&#xff0c;各自适用于不同场景。以下是主要容器的应用场景及案例&#xff1a; 一、序列式容器 元素按插入顺序存储&#xff0c;支持线性访问。 1. vector 场景&#xff1a;动态数组…

安装前端vite框架,后端安装fastapi框架

前期准备 首先新建一个文件夹&#xff0c;文件夹里面新建一个文件夹&#xff0c;用于安装依赖 安装vite框架 npm init -y 目的是安装package.json配置文件 npm install vite --save-dev 安装vite框架 安装完是这个样子 新建了一个文件夹和js文件 后端内容 main.js document.…

深度学习:基础与概念(第1章:深度学习革命)

目录 第1章&#xff1a;深度学习革命 1.1深度学习的影响 1.1.1医疗诊断 1.1.2蛋白质结构预测 1.1.3图像合成 1.1.4大语言模型 1.2一个教学示例 1.2.1合成数据 1.2.2线性模型 1.2.3误差函数 1.2.4模型复杂度 1.2.5正则化 1.2.6模型选择 1.3机器学习简史 1.3.1单层…

通过触发器统计访问数据库的客户端IP地址

通过触发器统计访问数据库的客户端IP地址 创建用户登录审计表创建登录审计触发器查看登录审计结果禁用和启用触发器创建用户登录审计表 创建记录表: create table appuser1.user_login_audit (login_time DATE,session_id number,username VARCHAR2(30),os_user VARCHAR2(30…

在MCU上的1微秒的延迟实现方案及测量方法

运行环境&#xff1a; stm32h743iit6; 主频480MHz; APB1; 240MHz; TIM5 240MHz; 预分频系数为1; 定时器计数频率240MHz&#xff1b; 应用需求&#xff1a;实现软件模拟IIC&#xff0c;延迟精度2个微秒&#xff1b; 量变引起质变&#xff0c;当延迟粒度太小时&#xff0c;需要考…

macos电脑本地搭建mistral-7b大模型出现4-bit量化和缓存不足问题的记录

问题背景 本人想再本地笔记本电脑上搭建一个mistral-7b的大模型&#xff0c;在搭建的过程中&#xff0c;出现了4-bit量化模式无法处理的问题&#xff0c;以及电脑内存/显存不足的问题&#xff0c;导致无法搭建 电脑硬件信息 名称&#xff1a;2019 Mac book pro 内存&#xff1a…

C# 基础知识总结(带详细文字说明)

1. 基础语法结构 C# 程序由命名空间、类和方法组成。每个程序必须有一个 Main 方法作为入口点。using 指令用于导入命名空间&#xff0c;Console.WriteLine() 是常用的输出方法。 csharp 复制 下载 using System; // 引入核心命名空间class Program // 类定义 {static v…

C#最佳实践:为何要统一命名

C#最佳实践:为何要统一命名 在 C# 编程的世界里,代码就像是一座庞大的数字城市,而命名则是城市中纵横交错的街道名称与建筑标识。如果没有统一的命名规范,这座城市将陷入混乱,开发者在其中探索、维护代码时也会迷失方向。统一命名不仅是一种编程习惯,更是保障代码质量、…

通过后端连接Opengauss数据库的方法

文章目录 通过后端连接Opengauss数据库的方法一、为什么默认不能访问&#xff1f;二、要让普通用户从宿主机访问数据库&#xff0c;需要以下几个步骤&#xff1a;1. 使用 omm 超级用户登录数据库2. 创建一个应用程序专用用户&#xff0c;并设置密码3. 提供给应用程序专用用户对…

AWS Config:概述、优势以及如何开始?

在当今云原生架构快速发展的背景下&#xff0c;越来越多企业意识到资源配置管理和合规性审查的重要性。作为 AWS 官方授权代理商&#xff0c;在云上致力于为企业客户提供全面、可靠的云服务解决方案&#xff0c;帮助企业轻松上云、合规运营。本文将为您详细解读 AWS Config ——…

金融领域LLM开源测试集

BizFinBench 中文 金融业务场景基准数据集 结合迭代校准评估框架IteraJudge&#xff0c;对25个先进LLM进行全面评估&#xff0c;发现在金融AI领域与人类期望存在显著性能差距。 https://arxiv.org/pdf/2505.19457 https://github.com/HiThink-Research/BizFinBench/tree/m…