Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Windows10下使用WSL“愉快”编译FFMPEG(带x265编码器)

Windows10下使用WSL“愉快”编译FFMPEG(带x265编码器)

作者头像
我不是码神
发布于 2022-07-28 06:31:46
发布于 2022-07-28 06:31:46
1.4K00
代码可运行
举报
文章被收录于专栏:流媒体技术流媒体技术
运行总次数:0
代码可运行

之所以在愉快二字上加引号,相信编译过FFMPEG的同学会深有体会,根本不存在愉快二字,编译FFMPEG是痛苦,尤其是在Windows环境下面。打开搜索引擎随手搜索一把编译FFMPEG,就会有很多文章,我相信即使你老老实实按照文章的步骤来编译,也会心里骂娘的。

之所以说是愉快的编译,主要是因为windows10提供了WSL,比起以前需要用到的linux模拟环境要强很多,是非常接近原生linux系统的环境了。所以在第一次在WSL编译FFMPEG还是顺利到吓人。当然前提是我们需要先运行一下visual studio command prompt,这个工具会将当前的控制台配置好vs的c++的工具的环境变量啥的,然后直接敲入bash回车,此时控制台会启动WSL,进入linux环境,这个linux环境是可以访问刚才配置的环境变量的,所以可以调用windows下的编译工具进行编译。微软本身提供了FFmpegInterop这个开源项目来编译FFMPEG,但是很难用,对vs版本也有限制,我用的vs2019,所以并不支持。

虽然第一次编译FFMPEG很顺利,但是当我想让FFMPEG带上x265编码器的时候,麻烦来了。首先需要编译x265,这玩意儿做的还是很贴心,build目录下有

arm-linux/ msys-cl/ vc10-x86_64/ vc12-x86/ vc15-x86_64/ xcode/

linux/ vc11-x86/ vc12-x86_64/ vc9-x86/

msys/ vc10-x86/ vc11-x86_64/ vc15-x86/ vc9-x86_64/

这么多环境的编译脚本,算是考虑周全了,我先是用linux下的,编译通过,但转念一想不对,我是编译windows下的ffmpeg,链接linux环境的x265包肯定不对啊。试了一下用vc开头的目录,各种报错,放弃了。这时候我把目光停留在了msys-cl和msys两个目录上了。之前搜索文章的时候,都说ffmpeg编译要通过msys。那么显然用这个环境是最合适的了。

下载msys2(这个和msys还不一样,里面狗血剧情自行搜索),然后打开visual studio command prompt,进入msys64/usr/bin。输入bash回车,进入msys环境,开始编译。编译成功,产生了windows下的lib文件和dll之类。回到ffmpeg,加入配置参数,--enable-libx265开始编译,报找不到x265。打开日志说找不到x265.h头文件,可头文件明明就在那儿啊。后来无论我把头文件放哪儿,无论参数怎么配置,就是死活报这个错误。要奔溃了。

试遍网上说的各种方法,还是报这个错。我意识到问题不是出在这里。暂时没办法的情况下尝试了一下使用inter的编码器,问题更多,但却意外发现了可能是64位和32位不兼容的问题。

事实证明确实如此,在启动visual studio command prompt的时候要选择x64的环境,保证所有库也是x64的,不过当我运行x265的脚本的时候却报64 bit target not set, please launch 'visual studio command prompt' and run '..\vcvarsall.bat amd64 | x86_amd64 | amd64_x86'

怎么可能,我明明设置x64环境啊。我愤怒打开脚本,看到了如下的脚本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
target_processor='amd64'
path=$(which cl)

if cl; then
    echo
else
    echo "please launch 'visual studio command prompt' and run '..\vcvarsall.bat amd64'"
    echo "and then launch msys bash shell from there"
    exit 1
fi

if [[ $path  == *$target_processor* ]]; then
    echo
else
    echo "64 bit target not set, please launch 'visual studio command prompt' and run '..\vcvarsall.bat amd64 | x86_amd64 | amd64_x86'"
    exit 1
fi

cmake -G "NMake Makefiles" -DCMAKE_CXX_FLAGS="-DWIN32 -D_WINDOWS -W4 -GR -EHsc" -DCMAKE_C_FLAGS="-DWIN32 -D_WINDOWS -W4"  ../../source
if [ -e Makefile ]
then
    nmake
fi

原来是判断了amd64,我忽略了所有的判断,直接执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cmake -G "NMake Makefiles" -DCMAKE_CXX_FLAGS="-DWIN32 -D_WINDOWS -W4 -GR -EHsc" -DCMAKE_C_FLAGS="-DWIN32 -D_WINDOWS -W4"  ../../source

成功!,再执行nmake,编译出来了,接着执行ffmpeg的configure,终于成功了。make,也顺利通过。功夫不负有心人。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-05-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Windows给FFmpeg集成H.266编码器vvenc
《FFmpeg开发实战:从零基础到短视频上线》该书的第八章介绍了如何在Windows环境给FFmpeg集成H.264和H.265的编码器,如今H.266的编码器vvenc也日渐成熟,从7.1版本开始的最新FFmpeg源码已经支持H.266的编码器vvenc。
aqi00
2025/05/19
270
Windows给FFmpeg集成H.266编码器vvenc
时序数据库:TDengine简介
TDengine是一个高效的存储、查询、分析时序大数据的平台,专为物联网、车联网、工业互联网、运维监测等优化而设计。您可以像使用关系型数据库MySQL一样来使用它,但建议您在使用前仔细阅读一遍下面的文档,特别是 数据模型 与 数据建模。除本文档之外,欢迎 [下载产品白皮书](https://www.taosdata.com/downloads/TDengine White Paper.pdf)。
Freedom123
2024/03/29
5500
时序数据库:TDengine简介
msvc交叉编译:使用vcvarsall.bat设置命令行编译环境
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/51722353
10km
2019/05/25
2.9K0
Win10 + VS2015 下编译 Qt5.6.0
近期由于另外一个项目需要用 vs2015 ,于是把 Qt 也升级到了 5.6.0 。由于项目需要兼容 Windows xp ,所以需要自己编译 Qt 。这里大致整理一下编译的过程。
用户3519280
2023/07/06
5500
Win10 + VS2015 下编译 Qt5.6.0
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
​《FFmpeg开发实战:从零基础到短视频上线》一书的“12.1.2 交叉编译Android需要的so库”介绍了如何在Windows环境交叉编译Android所需FFmpeg的so库,前文又介绍了如何在Linux环境交叉编译Android所需FFmpeg的so库,接下来介绍如何在Linux环境交叉编译Android所需x265的so库。
aqi00
2024/03/23
9320
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
弃用VS转向VS Code
由于Visual Studio安装即用,门槛低,便于调试,且最开始入门一直使用VS,所以在windows平台一直使用Visual Studio进行开发,但是Visual Studio的体积过于庞大,而且VS的免费的插件较少。反观VS Code其存在众多的插件,可以满足各种开发需求,可以极大地提高开发效率,所以最终还是决定转战VS Code。本文将详细讲解使用VS Code进行C/C++开发的相关配置。
程序员的园
2024/07/30
6400
弃用VS转向VS Code
VS2010编译Qt5.3.2 64bit
在Windows下,Qt官网默认提供的二进制版本大多是32位,目前(2015.01.24)只对VS2013提供了64位版本,如下图所示:
用户3519280
2023/07/06
2790
VS2010编译Qt5.3.2 64bit
linux centos7 ffmpeg、x265、x264、fdk-aac编译
[fdk-aac下载链接](https://github.com/mstorsjo/fdk-aac)
用户8916984
2022/07/06
1.6K0
最简单的基于FFMPEG的视频编码器(YUV编码为H.264)
=====================================================
全栈程序员站长
2022/09/13
6490
最简单的基于FFMPEG的视频编码器(YUV编码为H.264)
Pytorch的C++端(libtorch)在Windows中的使用
填一个之前的坑啊,本篇的姊妹篇——利用Pytorch的C++前端(libtorch)读取预训练权重并进行预测 这篇文章中已经说明了如何在Ubuntu系统中使用libtorch做预测,当初也有朋友问我如何在Windows之下尝试使用libtorch,当时因为时间关系没有去看,后来就给忘了…现在有时间了当然要尝试一下~
老潘
2023/10/19
1.5K0
Pytorch的C++端(libtorch)在Windows中的使用
pip安装mysqlclient报错的解决
Windows 环境下安装python包经常会有各种环境方面的问题及报错。 最近在python36/37下升级安装mysqlclient包时产生了下面的错误,不论是百度还是Stack Overflow上查找都没有真正的解决方案,于是写文章与大家一起分享下这类报错的解决方法。
全栈程序员站长
2022/11/17
2.7K0
pip安装mysqlclient报错的解决
FFmpeg和x264的windows版本编译安装记录
网上有各种版本的介绍,建议优先参考ffmpeg官网的说明,因为更新时间关系,可能细节有差异,但差异不大:https://trac.ffmpeg.org/wiki/CompilationGuide/MSVC
呱牛笔记
2023/05/02
1.4K0
FFmpeg和x264的windows版本编译安装记录
Ubuntu 16.04 下编译 FFmpeg
然后注释掉 /etc/apt/sources.list.d/google-chrome.list中的源
103style
2022/12/19
7010
windows下msvc/mingw静态编译 lmdb的CMakeLists.txt
10km
2018/01/03
2.5K0
MSVC/MinGW中导入glog静态库的正确方式
10km
2018/01/03
2.8K0
在Visual Studio2013中编译使用libcurl库
libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证。想要知道更多关于libcurl的介绍,可以到官网 http://curl.haxx.se/上去了解,在这里不再详述。本文主要介绍如何在Visual Studio 2013开发环境中编译并使用libcurl库。
ccf19881030
2019/12/20
5.6K0
在Visual Studio2013中编译使用libcurl库
CMake构建学习笔记19-OpenSSL库的构建
OpenSSL是一个开源的加密工具包和库,主要实现了安全套接字层(SSL)和传输层安全(TLS)协议,以及各种加密算法、数字签名、消息摘要、加密证书等功能。这个库可以说是Web开发尤其是HTTPS通信的基石了。这里就具体讲解一下如何构建它。
charlee44
2024/12/22
4020
CMake构建学习笔记19-OpenSSL库的构建
PyQT5编译安装[Python3.6.1 + VS2013 + QT5.5]
原文链接:https://blog.csdn.net/humanking7/article/details/80393070
祥知道
2020/03/10
2.6K0
cmake:VS2015和GCC编译paho.mqtt C/C++ client
paho.mqtt.c是eclipse开发的C语言跨平台mqtt client 开源库,paho.mqtt.cpp是对应的C++ Client,paho.mqtt支持CMAKE编译,本文以脚本形式提供了使用CMAKE基于VS2015/Windows以及GCC/MinGW的编译过程。
10km
2021/11/15
1.8K0
编译LAVFilters
直接下载的地址http://xhmikosr.1f0.de/tools/ 且包含了yasm zlib等已经弄好了。-j8也可以用了,pkg-config都有了。真好。如果不嫌弃麻烦或不怕出现问题本着了解的目的可以自定义安装如下所示。
全栈程序员站长
2022/08/31
2.1K0
相关推荐
Windows给FFmpeg集成H.266编码器vvenc
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验