FFmpeg开发笔记(三十九)给Visual Studio的C++工程集成FFmpeg

本文涉及的产品
视觉智能开放平台,视频资源包5000点
视觉智能开放平台,图像资源包5000点
视觉智能开放平台,分割抠图1万点
简介: 在Windows上使用Visual Studio 2022进行FFmpeg和SDL2集成开发,首先安装FFmpeg至E:\msys64\usr\local\ffmpeg,然后新建C++控制台项目。在项目属性中,添加FFmpeg和SDL2的头文件及库文件目录。接着配置链接器的附加依赖项,包括多个FFmpeg及SDL2的lib文件。在代码中引入FFmpeg的`av_log`函数输出"Hello World",编译并运行,若看到"Hello World",即表示集成成功。详细步骤可参考《FFmpeg开发实战:从零基础到短视频上线》。

​《FFmpeg开发实战:从零基础到短视频上线》一书的“第11章 FFmpeg的桌面开发”介绍了如何在Windows环境对Qt结合FFmpeg实现桌面程序,那么Windows系统通过Visual Studio开发桌面程序也是很常见的,下面就介绍如何在Visual Studio的C++工程中集成FFmpeg库和SDL2库。

首先按照《FFmpeg开发实战:从零基础到短视频上线》一书第1章“1.3 Windows系统安装FFmpeg”的介绍,把已编译好的FFmpeg库安装到个人电脑的E:\msys64\usr\local\ffmpeg(该安装目录可替换为自己电脑实际的安装路径,注意一旦更换FFmpeg的安装目录,后面所有的FFmpeg安装路径配置也要跟着修改)。
再打开事先安装的Visual Studio 2022,创建一个基于C++的控制台应用项目。等待Visual Studio打开新项目,在主界面右侧的解决方案资源管理器窗口中右击项目名称,选择右键菜单底部的属性选项。在弹出的属性页面中,依次选择左侧的列表项:配置属性→VC++目录,并在属性页面右侧的列表项中依次选择:常规→外部包含目录→编辑。在弹出的外部包含目录窗口中添加下列头文件目录(具体路径根据自己电脑上的ffmpeg安装路径调整):

E:\msys64\usr\local\ffmpeg\include
E:\msys64\usr\local\sdl2\include

单击外部包含目录窗口右下角的确定按钮,确认添加上面两个头文件目录。
接着依次选择属性页面左侧的列表项:配置属性→链接器→常规,并在页面右侧的列表项中依次选择:附加库目录→编辑。在弹出的附加库目录窗口中添加下列库文件目录(具体路径根据自己电脑上的sdl2安装路径调整):

E:\msys64\usr\local\ffmpeg\lib
E:\msys64\usr\local\sdl2\lib

单击附加库目录窗口右下角的确定按钮,确认添加上面两个库文件目录。
接着依次选择属性页面左侧的列表项:配置属性→链接器→输入,并在页面右侧的列表项中依次选择:附加依赖项→编辑。在弹出的附加依赖项窗口中添加下列lib文件列表:

avcodec.lib
avdevice.lib
avfilter.lib
avformat.lib
avutil.lib
postproc.lib
swresample.lib
swscale.lib
SDL2.lib

添加了lib文件配置的附加依赖项窗口如下图所示。单击附加依赖项窗口右下角的确定按钮,确认添加上述的lib文件列表。

vs2022_lib.png

然后单击属性页面右下角的确定按钮,完成FFmpeg与SDL2的依赖库导入设置。
回到Visual Studio 2022的主界面,在左侧的代码编辑窗口中填写下面的FFmpeg测试代码,主要是调用FFmpeg框架的av_log函数来输出“Hello World”。

extern "C"
{
#include <libavutil/avutil.h>
}

int main(int argc, char** argv) {
    av_log(NULL, AV_LOG_INFO, "Hello World\n");
    return 0;
}

保存测试代码后,依次选择顶部菜单:调试→开始执行。Visual Studio就开始编译测试程序,编译完毕弹出控制台窗口输出了一行日志“Hello World”,说明成功在Visual Studio的C++工程中集成了FFmpeg库。

更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。

目录
相关文章
|
3天前
|
XML 开发工具 Android开发
FFmpeg开发笔记(五十六)使用Media3的Exoplayer播放网络视频
ExoPlayer最初是为了解决Android早期MediaPlayer控件对网络视频兼容性差的问题而推出的。现在,Android官方已将其升级并纳入Jetpack的Media3库,使其成为音视频操作的统一引擎。新版ExoPlayer支持多种协议,解决了设备和系统碎片化问题,可在整个Android生态中一致运行。通过修改`build.gradle`文件、布局文件及Activity代码,并添加必要的权限,即可集成并使用ExoPlayer进行网络视频播放。具体步骤包括引入依赖库、配置播放界面、编写播放逻辑以及添加互联网访问权限。
23 1
FFmpeg开发笔记(五十六)使用Media3的Exoplayer播放网络视频
|
4天前
|
Web App开发 安全 程序员
FFmpeg开发笔记(五十五)寒冬里的安卓程序员可进阶修炼的几种姿势
多年的互联网寒冬在今年尤为凛冽,坚守安卓开发愈发不易。面对是否转行或学习新技术的迷茫,安卓程序员可从三个方向进阶:1)钻研谷歌新技术,如Kotlin、Flutter、Jetpack等;2)拓展新功能应用,掌握Socket、OpenGL、WebRTC等专业领域技能;3)结合其他行业,如汽车、游戏、安全等,拓宽职业道路。这三个方向各有学习难度和保饭碗指数,助你在安卓开发领域持续成长。
20 1
FFmpeg开发笔记(五十五)寒冬里的安卓程序员可进阶修炼的几种姿势
|
26天前
|
XML Java Android开发
FFmpeg开发笔记(五十二)移动端的国产视频播放器GSYVideoPlayer
GSYVideoPlayer是一款国产移动端视频播放器,支持弹幕、滤镜、广告等功能,采用IJKPlayer、Media3(EXOPlayer)、MediaPlayer及AliPlayer多种内核。截至2024年8月,其GitHub星标数达2万。集成时需使用新版Android Studio,并按特定步骤配置依赖与权限。提供了NormalGSYVideoPlayer、GSYADVideoPlayer及ListGSYVideoPlayer三种控件,支持HLS、RTMP等多种直播链接。
76 18
FFmpeg开发笔记(五十二)移动端的国产视频播放器GSYVideoPlayer
|
1天前
|
Android开发 开发者
FFmpeg开发笔记(五十七)使用Media3的Transformer加工视频文件
谷歌推出的Transformer,作为Jetpack Media3架构的一部分,助力开发者实现音视频格式转换与编辑。Media3简化了媒体处理流程,提升了定制性和可靠性。Transformer可用于剪辑、添加滤镜等操作,其示例代码可在指定GitHub仓库中找到。要使用Transformer,需在`build.gradle`中添加相关依赖,并按文档编写处理逻辑,最终完成音视频转换任务。具体步骤包括配置剪辑参数、设置空间效果以及监听转换事件等。
11 0
FFmpeg开发笔记(五十七)使用Media3的Transformer加工视频文件
|
25天前
|
Linux 开发工具 Android开发
FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher
EasyPusher是一款国产RTSP直播录制推流客户端工具,支持Windows、Linux、Android及iOS等系统。尽管其GitHub仓库(安卓版:https://github.com/EasyDarwin/EasyPusher-Android)已多年未更新,但通过一系列改造,如升级SDK版本、迁移到AndroidX、指定本地NDK版本及更新Gradle版本等,仍可在最新Android Studio上运行。以下是针对Android Studio Dolphin版本的具体改造步骤。
43 3
FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher
|
5天前
|
Linux 视频直播
FFmpeg开发笔记(五十四)使用EasyPusher实现移动端的RTSP直播
本文介绍了如何使用EasyPusher-Android实现RTSP直播流程。首先对比了RTSP、RTMP、SRT和RIST四种流媒体协议,并以RTSP为例,详细说明了使用EasyPusher-Android向流媒体服务器进行RTSP直播推流的方法。文中还提供了OBS Studio配置RTSP插件及ZLMediaKit云服务器部署的相关信息,通过修改EasyPusher-Android源码使其支持通用RTSP地址,最终验证了直播功能的成功实现。
21 0
FFmpeg开发笔记(五十四)使用EasyPusher实现移动端的RTSP直播
|
25天前
|
编解码 API 数据安全/隐私保护
FFmpeg开发笔记(五十四)使用EasyPusher实现移动端的RTSP直播
【9月更文挑战第21天】本文介绍了如何使用FFmpeg和EasyPusher实现移动端RTSP直播。首先概述了EasyPusher的功能及其API,接着详细描述了安装FFmpeg、获取EasyPusher库、初始化对象、打开输入流、配置推送参数及读取推送帧的具体步骤,并提醒开发者注意网络环境、编码参数和权限管理等问题,以确保直播质量与稳定性。
|
18天前
|
前端开发 C++ Windows
C++生成QML代码与QML里面集成QWidget
这篇文章介绍了如何在C++中生成QML代码,以及如何在QML中集成QWidget,包括使用Qt Widgets嵌入到QML界面中的技术示例。
|
3月前
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
216 6
|
3月前
|
Java 关系型数据库 MySQL
如何实现Springboot+camunda+mysql的集成
【7月更文挑战第2天】集成Spring Boot、Camunda和MySQL的简要步骤: 1. 初始化Spring Boot项目,添加Camunda和MySQL驱动依赖。 2. 配置`application.properties`,包括数据库URL、用户名和密码。 3. 设置Camunda引擎属性,指定数据源。 4. 引入流程定义文件(如`.bpmn`)。 5. 创建服务处理流程操作,创建控制器接收请求。 6. Camunda自动在数据库创建表结构。 7. 启动应用,测试流程启动,如通过服务和控制器开始流程实例。 示例代码包括服务类启动流程实例及控制器接口。实际集成需按业务需求调整。
256 4

热门文章

最新文章