热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ffmpegc语言开发环境搭建,WINDOWS编译FFMPEG4.3搭建VS2019开发环境

安装VS2019前往微软官网下载并安装VS2019社区版安装MSYS2(1)下载安装包前往官网下载MSYS2安装包https:www.msys2.org(假设安装至D:\msys6

安装VS2019

前往微软官网下载并安装VS2019社区版

511a154ba7e2b17a0ba87c8d610469c1.png

安装MSYS2

(1)下载安装包

前往官网下载MSYS2安装包 https://www.msys2.org/ (假设安装至 D:\msys64)

26da941c2f2b6942f7dabe3e3f913545.png

(2)访问windows PATH环境变量

编辑 D:\msys64\msys2_shell.cmd

将 rem set MSYS2_PATH_TYPE=inherit

修改为 set MSYS2_PATH_TYPE=inherit

(3)使用VS2019命令行加载MSYS2

在开始菜单中打开VS2019文件夹,点击 x86 native tools command…

592c42a3c23279a815116fdd10839c54.png

进入msys2所在目录,以32位方式运行 msys2_shell.cmd

288f171ba69d8205aba6da3f78627db9.png

即可顺利启动MSYS2

a5a1e6a53d6f2d88614a7dc80811deb2.png

(4)安装MSYS2编译FFMPEG所需的依赖

依次安装如下工具:

汇编工具

Pacman -S nasm

Pacman -S yasm

项目编译工具

Pacman -S make cmake

比较工具

Pacman -S diffutils

(5)验证

在VS2019命令行输入cmkae,可以正确执行即代表msys2配置成功

fbd2b7127962745d9f6eea958ac36f0d.png

安装FFMPEG依赖

在开始编译FFMPEG之前,我们需要编译X264、fdk-acc、X265

(1)创建源码目录

创建/home/source目录,用于存放源码 D:\msys64\home\source

(2)使用msys2编译X264

将x264放入source目录

cd /home/source/x264/

CC=cl ./configure --enable-shared

Make -j4

Make install

721288a3bb7a09b3f7186be7370e228b.png

(3)使用VS2019命令行编译fdk-acc

将fdk-aac-master放入source目录

cd d:\msys64\home\source\fdk-aac-master

nmake -f Makefile.vc

nmake -f Makefile.vc prefix=.\install install

d1e53f13a5cd9f83bcacc4c9d9fc9ee5.png

(4)使用VS2019的cmake在msys2中编译x265

将x265放入source目录,并使用VS2019的cmake进行编译

查看VS2019 cmake路径

Whereis cmake

dca7d7fc93375440445ab74bc9d8658b.png

编辑文件 D:\msys64\home\source\x265\build\msys-cl\make-Makefiles.sh

cmake -G "NMake Makefiles" -DCMAKE_CXX_FLAGS="-DWIN32 -D_WINDOWS -W4 -GR -EHsc" -DCMAKE_C_FLAGS="-DWIN32 -D_WINDOWS -W4"  ../../source

修改为

/c/"Program Files (x86)/Microsoft Visual Studio/2019"/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/bin/cmake.exe -G "NMake Makefiles" -DCMAKE_CXX_FLAGS="-DWIN32 -D_WINDOWS -W4 -GR -EHsc" -DCMAKE_C_FLAGS="-DWIN32 -D_WINDOWS -W4"  ../../source

使用msys2 进入目录

cd /home/source/x265/build/msys-cl/

./make-Makefiles.sh

Nmake install

执行nmake install 如果出现权限错误,

8f29436837cdab6dc94946d6118020ea.png

那么需要使用管理员权限启动VS2019命令行,再通过命令行启动msys2

4462f58e7cbbba1c1a3679400f901a71.png

执行namake install之后可见x265被编译至  C:/Program Files (x86)/x265/目录

9bec6d3706f75f53602f1db391cb7088.png

我们需要将其复制至msys2的 /usr/local/目录

f04c9ba5fd6cfd57dd74a2ef3992afae.png

编辑D:\msys64\usr\local\lib\pkgconfig\x265.pc

prefix=C:/Program Files (x86)/x265

修改为

prefix=/usr/local

准备编译FFMPEG

进入目录 D:\msys64\home\source\fdk-aac-master\install

将其中的 bin、lib、include 目录 复制至 /usr/local

将 D:\msys64\home\source\fdk-aac-master\fdk-aac.pc.in

复制至 D:\msys64\usr\local\lib\pkgconfig 并重命名为 fdk-aac.pc

将内容替换为:

prefix=/usr/local

exec_prefix=${prefix}

libdir=${exec_prefix}/lib

includedir=${prefix}/include

Name: Fraunhofer FDK AAC Codec Library

Description: AAC codec library

Version:

Libs: -L${libdir} -lfdk-aac

Libs.private:

Cflags: -I${includedir}

将D:\msys64\usr\local\lib\pkgconfig 复制至 D:\msys64\mingw32\lib

进入目录 D:\msys64\usr\local\lib

将 libx264.dll.lib 重命名为 libx264.lib

将 libx265.lib 重命名为 x265.lib

编译ffmpeg

(1)复制FFMPEG 4.3源代码

将ffmpeg源码复制至 /home/source

cd /home/source/ffmpeg-4.3/

(2)使用VS2019编译器配置FFMPEG

CC=cl.exe ./configure --prefix=./install --toolchain=msvc --enable-shared --disable-programs --disable-ffplay --disable-ffmpeg --disable-ffprobe --enable-libx264 --enable-gpl --enable-libfdk-aac --enable-nonfree --enable-libx265

7499703b036d74c1fbac3609859681a0.png

(3)编译FFMPEG

Make -j4

5533d04749e7c8625389833fa232d57c.png

(4)安装FFMPEG

Make install

1c351ddaaa22b7d535930a1cf1892da7.png

整理编译后的文件

成功编译FFMPEG之后,我们需要整理FFMPEG相关文件,以便开发所用

(1)创建目录 ffmpeg4.3_project

进入该目录继续创建文件夹

Include : 用于放置头文件

Lib : 用于放置库文件

Bin : 用于放置DLL

Src :用于放置项目源码

Tools : 放置FFMPEG源码

(2)整理bin目录

复制 D:\msys64\home\source\ffmpeg-4.3\install\bin  中的DLL文件 至bin目录

复制 D:\msys64\usr\local\bin 中的DLL文件至 bin目录

(3)整理lib目录

复制 D:\msys64\home\source\ffmpeg-4.3\install\bin 中的lib文件至 lib目录

(4)整理include目录

复制 D:\msys64\home\source\ffmpeg-4.3\install\include 至include目录

(5)整理tools目录

复制 D:\msys64\home\source\ 至 tools目录

验证

(1)在src目录创建VS2019项目

8ec19d3c21a07bfbe273fc5f00d53924.png

(2)配置附加包含目录路径

8db6f85f912b093a5daa0b20f51a5be1.png

(3)配置附加库路径

6b3a7f5d1e291c82cceaa5344290c156.png

(4)配置输出目录

978f64375a9277d72306241d4eaa3cd0.png

(5)配置工作目录

5fa1588f5c9f4a44b726b5f99efb1b1b.png

(6)创建测试类

df51a9066d109c35d79d60b11c55b496.png

(7)编写代码

#include

using namespace std;

extern "C" {

#include

}

#pragma comment(lib,"avcodec")

int main(int argc, char* argv[])

{

cout <

return 0;

}

(8)测试

8c608b41a99a0122028eba0b4358800f.png

相关下载&#xff1a;



推荐阅读
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 解决PHP与MySQL连接时出现500错误的方法
    本文详细探讨了当使用PHP连接MySQL数据库时遇到500内部服务器错误的多种解决方案,提供了详尽的操作步骤和专业建议。无论是初学者还是有经验的开发者,都能从中受益。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 本文详细记录了在银河麒麟操作系统和龙芯架构上使用 Qt 5.15.2 进行项目打包时遇到的问题及解决方案,特别关注于 linuxdeployqt 工具的应用。 ... [详细]
  • 如何彻底清除顽固软件如360
    本文详细介绍了如何彻底卸载难以删除的软件,如360安全卫士。这类软件不仅难以卸载,还会在开机时启动多个应用,影响系统性能。我们将提供两种有效的方法来帮助您彻底清理这些顽固软件。 ... [详细]
  • 本文详细介绍了Java中实现异步调用的多种方式,包括线程创建、Future接口、CompletableFuture类以及Spring框架的@Async注解。通过代码示例和深入解析,帮助读者理解并掌握这些技术。 ... [详细]
  • 本文介绍了如何使用Workman框架构建一个功能全面的即时通讯系统,该系统不仅支持一对一聊天、群组聊天,还集成了视频会议和实时音视频通话功能,同时提供了红包发送等附加功能。 ... [详细]
  • 本文分享了作者在不同版本的Ubuntu系统上尝试编译VLC for Android的经历,包括遇到的技术难题及解决方案,旨在帮助开发者避免常见的编译问题。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 本文详细介绍了C语言中的指针,包括其基本概念、应用场景以及使用时的优缺点。同时,通过实例解析了指针在内存管理、数组操作、函数调用等方面的具体应用,并探讨了指针的安全性问题。 ... [详细]
author-avatar
紫云轻梦lyq
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有