win10 下编译ffmpeg3.36.tar.gz

所需工具:

  1.         win10
  2.         ffmpeg3.36.tar.gz。 或其他版本,下载地址:Index of /releases
  3.         msys2。 下载地址:http://www.msys2.org。
  4.         Visual Studio 2017。

1. 安装MSYS

        MSYS2像是windows下的一个子系统,它把windows里面的命令进行封装,并穿上了一层linux命令的外衣,使得在msys中可以使用linux命令,但实际执行的是windows的命令。

        下载后,按照提示进行安装。我是直接安装在E盘:E:/MSYS2。

1.1)修改msys的镜像源

        目标文件为"msys64\etc\pacman.d\mirrorlist.msys",将内容改为:

##
## MSYS2 repository mirrorlist
#### Primary
## msys2.org
Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch/
Server = http://repo.msys2.org/msys/$arch
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MSYS2/$arch
Server = http://www2.futureware.at/~nickoe/msys2-mirror/msys/$arch/

然后保存。

1.2)配置msys2的cmd.

        使用记事本或Notepad++打开 msys2 安装目录下的 "msys2_shell.cmd" 文件,将里面的 "rem set MSYS2_PATH_TYPE=inherit" 改成 "set MSYS2_PATH_TYPE=inherit",然后点击保存。

1.3)下载编译ffmpeg需要的工具

        主要需要:make, gcc, diffutils, yasm, pkg-config, 这四个工具。

        双击"msys2_shell.cmd"文件,打开 shell 窗口,在 shell 中输入下面命令:

pacman -S make gcc diffutils yasm pkg-config

        pacman 是msys下的安装api的工具。 

1.4) 修改"E:\Windows Kits\10\Include\10.0.17763.0\um\winsock.h"代码

        这应该是安装VS2017时配置的文件夹,大家可以找找自己放在什么位置。用notepad++打开winsock.h, 在首行添加“#include<winsock2.h>”,如下:

否则,会报错。

2. 编译ffmpeg

 2.1)修改ffmpeg代码

         cd  到 ffmpeg 源码目录进行编译。我是把ffmpeg源码文件夹放在了msys里面的home文件夹下,具体路径为:E:\MSYS2\home\wzg16\ffmpeg。

        (1)修改"ffmpeg/config.h"

        用notepad++打开"ffmpeg/config.h",搜索“CC_IDENT”,把包含这个字符的行用“//”注释掉或者把里面的汉字删除, 否则在编译中会报错。

        (2)修改 "E:\MSYS2\home\wzg16\ffmpeg\ffprobe.c"

        用notepad++打开ffmpeg\ffprobe.c,搜索“CC_IDENT”,把包含这个字符的行用“//”注释掉,一共是一行:

//print_str("compiler_ident", CC_IDENT); // 我的这一句在2968行
        (3)修改 "E:\MSYS2\home\wzg16\ffmpeg\cmdutils.c"

        用notepad++打开ffmpeg\cmdutils.c,搜索“CC_IDENT”,把包含这个字符的行用“//”注释掉,一共是一行:

//av_log(NULL, level, "%sbuilt with %s\n", indent, CC_IDENT);//第1119行
        (3)不修改会带来以下错误。

        如果以上两行代码不注释,会在编译过程中带来以下error,错误原因是CC_IDENT宏没有被定义。

fftools/ffprobe.c(3047): error C2001: 常量中有换行符
...fftools/cmdutils.c(1119): error C2065: “slib”: 未声明的标识符
fftools/cmdutils.c(1119): error C2296: “%”: 非法,左操作数包含“char [138]”类型
fftools/cmdutils.c(1119): error C2059: 语法错误:“数字上的错误后缀”
fftools/cmdutils.c(1119): error C2059: 语法错误:“%”
fftools/cmdutils.c(1119): error C2017: 非法的转义序列
fftools/cmdutils.c(1119): error C2001: 常量中有换行符
fftools/cmdutils.c(1150): error C2143: 语法错误: 缺少“)”(在“*”的前面)
fftools/cmdutils.c(1150): error C2143: 语法错误: 缺少“{”(在“*”的前面)
...

2.2)打开VS2017的cmd,进入msys

        点击电脑的开始菜单,依次找到 "Visual Studio 2017" -> "x86 Native Tools Command Prompt For VS 2017)"(x86编译出来的库是32位,x64编译出来的是64位的)。

        在弹出的窗口中,输入"mys2_shell.cmd"。

**********************************************************************
** Visual Studio 2017 Developer Command Prompt v16.6.5
** Copyright (c) 2020 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x86'C:\Program Files (x86)\Microsoft Visual Studio\2017\Community>msys2_shell.cmd

        此时会打开一个新的窗口,如下图所示:

2.3)开始编译

        编译命令如下:

./configure  --toolchain=msvc  --enable-shared --prefix=windows
make -j 12             # -j 12 表示12线程 # 如果不执行步骤2.1,这里会报错。
make install

        编译命令中,--prefix=windows,用于指定了编译结果的存放目录在ffmpeg源码文件夹下,创建了一个名为“windows”的文件夹

2.4)编译结果:

        编译成功后,如下所示:

  • bin :该目录存放了 dll 和 lib 文件,例如:avcodec.lib、avcodec-58.dll
  • include:该目录存放了头文件,例如:libavcodec/avcodec.h
  • lib:该目录存放了 pkgconfig 文件
  • share:该目录存放了一些示例代码,例如:muxing.c
     

参考:

【FFmpeg笔记】04-Win10编译ffmpeg4.2.1(For Windows)_win10 安装ffmpeg4.2-CSDN博客

VS2015编译ffmpeg 3.4.2报错“slib”: 未声明的标识符_vs2017 编译的ffmpeg “slib”: 未声明的标识符-CSDN博客

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

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

相关文章

hadoop权威指南第四版

第一部分 HaDOOP基础知识 1.1 面临的问题 存储越来越大&#xff0c;读写跟不上。 并行读多个磁盘。 问题1 磁盘损坏 – 备份数据HDFS 问题2 读取多个磁盘用于分析&#xff0c;数据容易出错 --MR 编程模型 1.2 衍生品 1 在线访问的组件是hbase 。一种使用hdfs底层存储的模型。…

CSS3盒模型

CSS3盒模型规定了网页元素的显示方式&#xff0c;包括大小、边框、边界和补白等概念。2015年4月&#xff0c;W3C的CSS工作组发布了CSS3基本用户接口模块&#xff0c;该模块负责控制与用户接口界面相关效果的呈现方式。 1、盒模型基础 在网页设计中&#xff0c;经常会听到内容…

DSP 开发例程(5): tcp_server

目录 DSP 开发例程(5): tcp_server创建工程源码编辑tcp_echo.chelloWorld.c 调试说明 DSP 开发例程(5): tcp_server 此例程实现在 EVM6678L 开发板上创建 TCP Server进程, 完成计算机与开发板之间的 TCP/IP 通信. 例程源码可从我的 gitee 仓库上克隆或下载. 点击 DSP 开发教程…

组件化npm包打包和使用

背景&#xff1a;本地环境对功能组件提取&#xff0c;开发环境下通过本地路径引用&#xff0c;发布模式下走npm包引用 1、项目下新建packages/HelloWorld文件夹&#xff0c;在此文件夹下运行终端 npm init 新建packages/HelloWorld/index.vue文件 新建packages/HelloWorld/ind…

「完美修复」concrt140.dll丢失的修复方法

concrt140.dll是一个动态链接库文件&#xff0c;它是Microsoft Visual C 2015 Redistributable的一部分。这个文件通常位于Windows系统的System32文件夹中&#xff0c;它提供了一些用于多线程编程的函数和类。当你在运行某些程序时&#xff0c;系统会调用这个文件中的函数来执行…

VR全景图片如何制作?揭秘VR全景图片制作全流程

引言&#xff1a; VR全景图片是一种以全景视角为基础的图片制作技术&#xff0c;能够呈现出更为真实、立体的视觉体验。通过VR全景图片&#xff0c;观众可以360环顾四周&#xff0c;仿佛身临其境&#xff0c;提供了一种全新的感官体验&#xff0c;那么如何制作出令人满意的全景…

数据库-用户权限管理

创建用户&#xff1a; create user testlocalhost identified by 123456; create user 创建用户的固定开头 testlocalhost test为用户名&#xff0c; localhost:新建用户可以在哪些主机上登录&#xff0c;即使可以使用IP地址&#xff0c;网段主机名都可以 identified by 1…

【AIFEM案例分析】药柱随机响应分析

AIFEM是由天洑自主研发的一款通用的智能结构仿真软件&#xff0c;助力用户解决固体结构相关的静力学、动力学、振动、热力学等实际工程问题&#xff0c;软件提供高效的前后处理工具和高精度的有限元求解器&#xff0c;帮助用户快速、深入地评估结构的力学性能&#xff0c;加速产…

PHP在线客服系统平台系统源码+完全开源 带完整的搭建教程

在线客服系统已经成为企业与用户进行实时沟通的重要工具。PHP作为一种流行的服务器端脚本语言&#xff0c;具有高效、稳定和易用性等优点&#xff0c;因此被广泛应用于在线客服系统的开发。今天罗峰来给大家介绍一款PHP在线客服系统平台系统源码&#xff0c;源码完全开源&#…

ChatGPT扩展系列之ChatExcel

文章目录 ChatGPT扩展系列之ChatExcel对某一列的文字进行处理对数据进行排序对数据进行计算微软官方又推出Excel AI插件ChatGPT扩展系列之ChatExcel 自从ChatGPT很空出世之后,很多基于ChatGPT的应用便如雨后春笋般应用而生,这些应用的底层本质就是利用了ChatGPT对自然语言的…

SpringCloud(五) Eureka与Nacos的区别

SpringCloud(二) Eureka注册中心的使用-CSDN博客 SpringCloud(四) Nacos注册中心-CSDN博客 在这两篇博文中我们详细讲解了Eureka和Nacos分别作为微服务的注册中心的使用方法和注意事项,但是两者之间也有一些区别. 一, Nacos实例分类 Nacos实例分为两种类型: 临时实例:如果实例…

解决proteus仿真stm32,IIC通讯,IIC DEBUG无法显示从机应答信号的问题(问题情况为在8位数据后应答位显示?)

1、错误现象 错误现象如下&#xff0c;在IIC数据传输8位数据后&#xff0c;IIC DEBUG的应答位无法显示应答位 2、错误原因 我们打开信号传输的示波器&#xff0c;直接去查看IIC从机校验位的数据波形&#xff0c;可以看到从机示波器显示的的波形为半高ACK&#xff0c;那错误原…

在python中加载tensorflow-probability模块和numpy模块

目录 操作步骤&#xff1a; 注意&#xff1a; 问题&#xff1a; 解决办法&#xff1a; 操作步骤&#xff1a; 在虚拟环境的文件夹中&#xff0c;找到Scripts文件夹&#xff0c;点击进去&#xff0c;找到地址栏&#xff0c;在地址栏中输入cmd&#xff0c;进入如下界面。 输…

[LeetCode]-27. 移除元素-26.删除有序数组中的重复项-88.合并两个有序数组

目录 27.移除元素 题目 思路 代码 26. 删除有序数组中的重复项 题目 思路 代码 88.合并两个有序数组 题目 思路 代码 总结 27.移除元素 27. 移除元素 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/remove-element/description/ 题目 给你一…

新建包含cuda和cudnn的docker

背景&#xff1a;服务器的cudnn版本太低了&#xff0c;没有权限去修改。故新建包含cuda和cudnn的docker 步骤 一、拉取镜像及创建docker 拉取相关的镜像 从镜像列表选出相关版本的镜像https://gitlab.com/nvidia/container-images/cuda/blob/master/doc/supported-tags.md …

在全新ubuntu上用gpu训练paddleocr模型遇到的坑与解决办法

目录 一. 我的ubuntu版本![在这里插入图片描述](https://img-blog.csdnimg.cn/297945917309494ab03b50764e6fb775.png)二.首先拉取paddleocr源代码三.下载模型四.训练前的准备1.在源代码文件夹里创造一个自己放东西的文件2.准备数据2.1数据标注2.2数据划分 3.改写yml配置文件4.…

皮肤渲染方法总结

一、皮肤次表面光照 HDRP用的延迟管线&#xff0c;镜面和散射分开进行计算 UE有透射开启和关闭的效果 &#xff08;一&#xff09;镜面反射 BRDF和Kelemen方法 &#xff08;二&#xff09;次表面散射与透射 1.散射&#xff1a;BRDF与BRSSDF&#xff08;从反射点附近的点进行…

MES 的价值点之动态调度

随着数字化技术的发展&#xff0c;为制造企业的生产计划提供了更多的便利。但在实际生产管理过程中&#xff0c;企业的生产计划不管做的多么理想&#xff0c;还是可能会因诸多的扰动因素造成执行与计划差异&#xff0c;这时就需要通过一些动态调整方案去适应新的生产要求与环境…

LeetCode刷题之 存在重复元素(题目分析➕源代码)

题目链接&#x1f517;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 1. 题目分析 本题是要找到数组中的重复元素&#xff0c;所以我们分析出一下几点&#xff1a; 1. bool是一种数据类型&#xff0c;true是非0值&#xff0c;false是0.。 2. 数组…

网络协议--TCP的成块数据流

20.1 引言 在第15章我们看到TFTP使用了停止等待协议。数据发送方在发送下一个数据块之前需要等待接收对已发送数据的确认。本章我们将介绍TCP所使用的被称为滑动窗口协议的另一种形式的流量控制方法。该协议允许发送方在停止并等待确认前可以连续发送多个分组。由于发送方不必…