2.4 Windows Conan编译FFmpeg 4.4.1

Conan教程(4)—— 使用包 本文档译自: https://docs.conan.io/en/latest/using_packages/conanfile_txt.html https://docs.conan.io/en/latest/using_packages/using_profiles.html https://docs.conan.io/en/latest/using_packages/workflows.html https://docs.conan.io/en/latest/using_packages/debugg 阅读详情

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=True

ffmpeg/*: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 PRIVATE
    ffmpeg::avutil
    ffmpeg::swresample
    ffmpeg::swscale
    ffmpeg::avcodec
    ffmpeg::avformat
    ffmpeg::avfilter
    ffmpeg::avdevice
    ffmpeg::postproc
)

构建命令

# 生成构建系统(在build目录下执行)
cmake ..

# 编译(在build目录下执行)
cmake --build . --config Release
Windows OpenCV 4.8.0 源码编译:5个网络依赖下载失败问题与手动替换方案 本文详细解析了在Windows平台使用MinGW和CMake编译OpenCV 4.8.0源码时常见的5个网络依赖下载失败问题,包括ffmpeg、boostdesc等关键组件。提供了手动下载替代源、文件替换与哈希校验的完整解决方案,并分享CMake预下载配置技巧和编译优化方法,帮助开发者高效完成OpenCV源码编译。 阅读详情

相关推荐

C++依赖冲突终结者:Conan五大排除技巧实战指南

在C++项目开发中,依赖管理是构建复杂软件系统的核心挑战之一,尤其当项目需要集成多个第三方库时,版本冲突、ABI不兼容和链接错误等问题频发,常被称为“依赖地狱”。其根源在于C++的二进制兼容性要求高,不同库的版本、编译选项(如静态/动态链接)和传递依赖容易产生冲突。为解决这一问题,依赖管理工具应运而生,它们通过定义包的配方、解析依赖图来自动化处理库的获取与集成,从而提升构建的可复现性和工程效率。Conan作为C++生态中主流的依赖管理器,提供了强大的依赖解析能力,但在处理复杂依赖图时,仍需开发者掌握手动干预

weixin_30835649的博客 373

conan入门(六):conanfile.txt conanfile.py的区别

conan conanfile.txt conanfile.py的区别 在之前的博客《conan入门(四):conan 引用第三方库示例》中我们以cJSON为例说明了如何在项目中引用一个conan 包。 conanfile.txt 在这篇博客中我们为了引用cjson/1.7.13库,创建了一个conanfile.txt文件用于指定json_test.c程序的依赖库cjson [requires] cjson/1.7.13 [generators] cmake 关于conanfile.txt的详细说明参

10km的专栏 8987

Seedance 2.0跨平台构建实战:CMake与CI/CD工程化指南

在软件开发中,跨平台构建与依赖管理是保障项目可复现性和团队协作效率的核心工程实践。CMake作为主流的元构建系统,通过编写平台无关的CMakeLists.txt文件,能够自动生成各平台(如Windows的Visual Studio项目、Linux的Makefile、macOS的Xcode项目)的原生构建脚本,从而统一构建流程,解决环境差异和依赖冲突问题。结合持续集成/持续部署(CI/CD)流水线,可以实现代码提交后自动在多平台环境中编译、测试与打包,确保软件质量并奠定持续交付的基础。这些技术对于涉及复杂依赖

dianning8393的博客 409

Windows conan环境搭建

conan在windows上最新的版本是2.xx的,conan的1.xx版本和2.xx版本的差异非常大,我们在开发时目前需要的是conan 1.xx版本去做代码库管理工作,在安装时需要制定要安装的1.xx的conan版本号。,需要注意的是Visual Studio Community 2022对应的MSVC是17而不是2019版的16,如果使用msvc16去编译需要对应的适配一个msvc17的profile配置文件。下载对应的windows版本的git去安装使用。打开Microsoft Store中搜索。

天使之翼 3075

C/C++头文件问题全解析:从编译原理到工程实践

在C/C++开发中,头文件是声明与实现分离的核心机制,它通过预处理器进行文本替换,允许多个源文件共享接口。然而,这种机制也带来了编译单元独立性与代码实体唯一性之间的核心矛盾,常引发编译失败、链接错误和重定义等问题。理解头文件的编译原理和链接规则,对于构建健壮、可维护的项目至关重要。在实际工程中,头文件守卫、前向声明和合理的包含策略是解决这些问题的关键。例如,使用`#pragma once`或`#ifndef`守卫可以防止多重包含,而前向声明能有效降低编译依赖,避免循环包含。这些技术不仅提升了编译效率,还增强

weixin_30595035的博客 554

conan 详解 - (makefile)_files.zip

conan 详解 - (makefile)_files.zip

conan入门(四):conan 引用第三方库示例

conan 引用第三方库示例 Conan 是 C 和 C++ 语言的依赖项和包管理器。它是免费和开源的,适用于所有平台(Windows、Linux、OSX、FreeBSD、Solaris 等),可用于开发所有目标,包括嵌入式、移动(iOS、Android)和裸机。它还与 CMake、Visual Studio (MSBuild)、Makefiles、SCons 等所有构建系统集成,包括专有系统。 它专为加速 C 和 C++ 项目的开发和持续集成而设计和优化。通过完整的二进制包管理,它可以为任意数量的不

10km的专栏 1万+

Cursor赋能Qt C++:从环境配置到项目构建的AI开发新范式

本文详细介绍了如何利用Cursor工具链提升Qt C++开发效率,从智能环境配置到CMake项目构建的全流程实践。通过AI辅助编程、Qt生态优化及高级调试技巧,开发者可快速完成从传统开发到AI驱动的新范式转换,显著缩短项目搭建时间并提升代码质量。

weixin_30329623的博客 546

conan快速使用教程

conan是c++的依赖库管理工具,使用conan可以方便的管理自己工程所需要的第三方库,本文介绍conan的安装使用配置以及在vs中的使用方法。

weixin_42140099的博客 2957

从零开始:在Unity中使用Dynamic Bone实现角色骨骼自然抖动(以女性角色胸部为例)

本文详细介绍了在Unity中使用Dynamic Bone插件实现角色骨骼自然抖动的完整流程,特别以女性角色胸部为例。从插件导入、骨骼系统基础到Dynamic Bone组件配置和参数调优,提供了全面的技术指导。文章还包含性能优化技巧和常见问题解决方案,帮助开发者快速掌握这一物理效果实现方法。

weixin_28728495的博客 453

GNSS差分码偏差(DCB)从原理到实战:如何避免数据处理中的常见错误

本文深入解析GNSS差分码偏差(DCB)的原理及其对高精度定位的关键影响。针对数据处理中因忽略DCB校正导致的常见错误,如单系统PPP高程偏差、多系统融合精度下降及电离层研究失真等,提供了实战解决方案与主流DCB产品获取、集成方法,帮助用户有效规避陷阱,提升数据处理精度。

k5l6m的博客 223

VCMI从源码编译完整指南:CMake+Conan构建体系跨Windows、Linux、Android全流程

**VCMI** 是《英雄无敌 III》的开源游戏引擎(Open-source engine for Heroes of Might and Magic III),支持在 Windows、Linux、macOS、Android、iOS 等平台上运行。本文是一份面向新手和开发者的**从源码编译完整指南**,带你用 **CMake + Conan** 构建体系,完成跨 **Windows、Linux、

gitblog_00585的博客 653

USB通讯速度翻倍秘诀:手把手教你用WinUsb替代HID协议(附Zadig驱动配置图解)

本文详细介绍了如何通过WinUsb技术替代传统HID协议,实现USB通讯速度的显著提升。从技术对比、实现原理到Zadig驱动配置图解,手把手教你完成免驱高速通讯方案,适用于数据采集、固件升级等场景,实测速度可达HID协议的2倍以上。

weixin_29168675的博客 132

C++音视频开发环境搭建:从WSL2、FFmpeg到VSCode的完整避坑指南

音视频处理是多媒体技术的核心领域,涉及对音频和视频数据的采集、编码、解码、传输与渲染。其底层原理依赖于高效的编解码算法和硬件加速,以确保海量媒体数据能够被实时、高质量地处理。在工程实践中,C++因其对系统底层的直接控制能力和卓越的运行性能,成为构建高性能音视频应用的首选语言。一个稳定且高效的开发环境是进行C++音视频开发的基石,它直接决定了后续编码、调试和项目集成的效率。本文聚焦于**环境搭建**这一关键起步环节,详细阐述了如何利用**WSL2**(Windows Subsystem for Linux 2

chaoyv 397

SAP生产订单成本‘还原’实战:从标准成本到实际费用,一步步拆解差异来源(附物料分类账提示)

本文深入解析SAP生产订单成本差异分析的全过程,从标准成本到实际费用的追踪方法,揭示差异根源的六维分析法。特别强调物料分类账(CKMLCP)在成本还原中的关键作用,帮助财务人员精准定位价格差异、用量差异等问题,提升制造业成本管理的效率和准确性。

weixin_28705087的博客 531

Android Google 支付接入

1. 从 2023 年 8 月 2 日起,所有新应用都必须使用结算库版本 5 或更高版本。自 2023 年 11 月 1 日起,现有应用的所有新版本都必须使用结算库版本 5 或更高版本。 2. 如果您的应用以 Android 14 或更高版本为目标平台,您必须更新到 PBL 5.2.1 或 PBL 6.0.1 或更高版本。

帅次的博客 9404

yuzu编译 环境windows10,vs2019

yuzu编译

dingbiao2的博客 1288

YOLOv8改进,MobileNetV3轻量化架构改进特征提取网络,助力涨点

MobileNetV3通过结合硬件感知网络架构搜索(NAS)和NetAdapt算法,通过新颖的架构改进进一步提升了性能。本文开始探讨了自动化搜索算法与网络设计如何协同工作,以利用互补方法来提升整体技术水平。通过这一过程,创建了两个新的MobileNet模型:MobileNetV3-Large和MobileNetV3-Small,分别针对高资源和低资源使用场景。这些模型随后被适配并应用于目标检测和语义分割任务。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 3834

yuzu 模拟器下载完整教程:7 个存档版本清单,Windows 与 Linux 三步装好

yuzu-downloads 仓库按日期存档了 7 个 yuzu 模拟器构建,时间覆盖 2024-02-27 到 2024-03-04,每个版本都同时提供 Linux AppImage 和 Windows zip 两种文件。需要 yuzu 模拟器下载的话,在这个仓库里直接取对应文件即可,无需经过任何第三方中转站。 ## 第一步直接下载:先拿 2024-03-04 这个版本 结论先行:多数人直接

gitblog_00069的博客 372

C#上位机开发:西门子/三菱PLC通信,新手直接上手

对着西门子S7协议文档看半天,连“DB块地址怎么写”都搞不懂;写三菱PLC代码时,分不清MC协议和Modbus的区别,代码改来改去连不上;好不容易跑通代码,换个PLC型号又报错,不知道哪里出问题;后来发现,新手学PLC通信根本不用先啃协议文档——先跑通“能通信”的代码,再慢慢理解底层逻辑,效率至少提升3倍。西门子PLC:用S7NetPlus库(新手最友好),实现以太网通信,支持S7-200 SMART/1200/1500;

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 877

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

xmake v2.2.5,更加完善的 C/C++ 包依赖管理

百度智能云 云生态狂欢季 热门云产品1折起>>> 此版本耗时四个多月,对包依赖管理进行了重构改进,官...

weixin_34248705的博客 131

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

WSL2下从源码编译配置OpenCV C++开发环境完整指南

计算机视觉作为人工智能的重要分支,其核心在于通过算法处理和分析图像与视频数据。OpenCV作为跨平台的开源计算机视觉库,提供了丰富的图像处理和机器学习算法实现。在Linux环境下,通过CMake构建系统从源码编译OpenCV,能够实现高度的定制化和性能优化,这对于算法原型验证和工程部署至关重要。WSL(Windows Subsystem for Linux)为Windows用户提供了原生Linux开发环境,解决了传统Windows配置的兼容性问题。本文聚焦于在WSL2中配置OpenCV C++开发环境,涵盖

diaoju3333的博客 416

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

MinGW-w64 入门实战:Windows 原生 C/C++ 编译环境搭建与工程化配置

MinGW-w64 是 Windows 平台实现 GNU 工具链兼容性的核心编译环境,其本质是通过适配 Windows ABI(而非依赖 MSVCRT)提供轻量、静态可分发、无运行时捆绑的原生二进制构建能力。它支撑跨平台 C++ 库开发、嵌入式工具链、CI/CD 自动化及 AI 编程助手(如 Cursor、Claude Code)生成代码的本地可信编译闭环。技术价值在于命令行全链路可控性、POSIX 兼容性与 UCRT/SEH 异常处理等现代特性。典型应用场景包括 VS Code + CMake 轻量 ID

www.itmmd.com 379

C++音视频开发实战:基于FFmpeg与SDL2的采集播放系统构建

音视频处理是计算机多媒体领域的核心技术,其本质是对连续时基媒体数据的采集、编码、传输、解码与呈现。其原理涉及信号处理、操作系统硬件抽象、实时数据流管理等多个层面。掌握这项技术对于构建高性能、低延迟的媒体应用具有重要价值,广泛应用于视频会议、直播、媒体播放器及游戏引擎等场景。本文聚焦于使用C++进行音视频系统开发,通过整合FFmpeg这一行业标准的音视频处理库进行设备采集与格式转换,并利用SDL2库实现跨平台的媒体播放与渲染,深入探讨了从原始数据流到屏幕像素和扬声器振动的完整实现链路,为开发者提供了一个从零搭

HJ921004的博客 577

Windows C/C++开发:MinGW版本选择与配置全指南

在Windows平台进行C/C++开发时,GNU工具链的移植版本MinGW是连接Linux/macOS开发习惯与Windows原生程序编译的关键桥梁。其核心原理是通过提供GCC编译器、GDB调试器等工具,使开发者能够在Windows环境下编译生成不依赖第三方运行时的原生可执行文件。这一技术的工程价值在于极大地简化了跨平台开发的复杂度,尤其适用于需要编译开源库或迁移现有项目的场景。然而,MinGW生态中存在多个发行版和版本分支,如MinGW-w64、MSYS2等,不同版本在异常处理模型、运行时库支持和系统AP

weixin_34341117的博客 484

如何为VCMI贡献代码:编码规范、测试与线程模型完整指南

VCMI 是一款《英雄无敌 III》(Heroes of Might and Magic III)的开源游戏引擎,采用 C++ 编写,遵循客户端-服务器架构。想为 VCMI 贡献代码?这篇文章将完整带你走通全流程:从搭建开发环境、遵守 C++ 编码规范,到编写单元测试、理解多线程模型,帮助新手开发者快速向开源社区提交高质量补丁。 [![VCMI开源游戏引擎客户端图标,用于VCMI贡献代码前了解项

gitblog_01139的博客 790
上一篇: 2.3 Windows Vcpkg+MSVC编译FFmpeg 4.4.1
下一篇: 3.1 Android NDK交叉编译FFmpeg
卖猪肉的痴汉
博客等级 码龄10年 166粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值