首页 > 系统相关 >ffmpeg5.0+h264+h265 windows下编译方法

ffmpeg5.0+h264+h265 windows下编译方法

时间:2022-09-29 17:55:30浏览次数:88  
标签:msys2 ffmpeg 编译 h264 h265 windows x264 x265 安装

目录

前言

一,源码包下载

1.ffmpeg下载

2.下载x264代码

3.下载x265代码

二,MSYS2安装

三,安装cmake工具

四,代码编译

1.编译x264

2.编译x265

3.编译ffmpeg

五,功能验证

1.x264验证

2.x265验证

3.ffmpeg验证

六,其它

1.关于Cannot load library avcodec-59.dll问题

2.博主编译的ffmpeg库链接

参考博客链接


 

前言

        最近准备在windows上面用ffmpeg做视频编解码工作,找了很多博客对编译方法描述都不全,花了一天时间自己折腾编译通过了,写篇比较完整的博客分享给大家,希望对大家有所帮助,另外,感谢其他博主的分享!

一,源码包下载

1.ffmpeg下载

下载地址: https://ffmpeg.org   (1)在主页面中找到ffmpeg5.0版本点击 (2)点击下载,这里我下载的是gzip包

 

2.下载x264代码

下载地址: x264, the best H.264/AVC encoder - VideoLAN 可以直接下载源码包或者用git克隆

 

3.下载x265代码

下载地址: x265, the free H.265/HEVC encoder - VideoLAN 直接通过git下载

 

二,MSYS2安装

1.下载地址: MSYS2 2.下载完成之后点击安装,默认安装是C盘,C盘空间不够的话建议改下地址

 

3.然后直接下一步开始安装

 

4.安装完成之后先不运行,首先修改更新源为国内镜像,这样更快一点   国内镜像我们选择清华源 编辑 /etc/pacman.d/mirrorlist.mingw32 ,在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686
  编辑 /etc/pacman.d/mirrorlist.mingw64 ,在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64
  编辑 /etc/pacman.d/mirrorlist.ucrt64 ,在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/ucrt64
  编辑 /etc/pacman.d/mirrorlist.clang64 ,在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/clang64
  编辑 /etc/pacman.d/mirrorlist.msys ,在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch
  5.打开msys2命令行:

 

  6.然后执行下面命令配置环境:   (1)更新所有包
pacman -Syu
 

输入Y选择全部更新   更新完成之后再一次打开命令行执行:
pacman -Syu
  (2)安装基础工具:  
pacman -S base-devel
  直接默认全部安装 (3)安装编译工具  
pacman -S mingw-w64-x86_64-toolchain
  直接默认全部安装   注意:安装完成之后把msys2安装路径下mingw64/bin添加windows环境变量,不然在 msys2中编译出来的exe文件在windows运行会找不到库。

 

(4)安装其它工具
 
  1.   pacman -S yasm
  2.   pacman -S nasm
  3.   pacman -S make
 
    注意:不要使用msys2安装cmake工具,通过windows安装  

三,安装cmake工具

1.下载地址: Download | CMake

 

2.现在完成之后点击安装,然后next 3.勾上同意协议然后next   4.选择把cmake路径添加到环境变量,然后next

 

5.修改下安装地址,然后next

 

6.选择install等待升级完成

 

7.安装完成之后我们在msys2中是找不到cmake命令的,这里我们把windows path添加到msys2中 在windows环境变量中新建一个名字为 MSYS2_PATH_TYPE的环境变量,值改为 inherit,然后重启msys2就可以在msys2中使用安装的cmake了

 

四,代码编译

1.编译x264

(1)把下载的代码解压到msys2家目录下,即:msys2/home/xxx/(这里xxx表示用户名) (2)在x264代码下新建一个编译脚本build.sh,脚本内容如下:
 
  1.   basepath=$(cd `dirname $0`;pwd)
  2.   echo ${basepath}
  3.   cd ${basepath}/x264-master
  4.   pwd
  5.   ./configure --prefix=${basepath}/x264_install --enable-static --enable-shared \
  6.   --extra-ldflags=-Wl,--output-def=libx264.def
  7.   make -j8
  8.   make install
 
  ${basepath}表示的是脚本所在路径,x264-master表示源码包目录名字,这里对照实际修改 (3)打开msys2 X64终端

 

进入到build.sh所在路径,执行sh build.sh 等待编译完成 (4)编译完成之后在x264_install下会生成库和头文件

 

bin中存放的是动态库 include中存放的是头文件 lib中存放的是静态库,给后面ffmpeg链接使用 假如我们需要使用动态库的话,还缺少一个.lib文件

 

.lib文件可以由.dll直接生成,也可以由.def生成,这里我们可以用.def文件生成,在源码目录下有生成libx264.def文件

 

把libx264.def拷贝到和libx264-164.dll同一级目录 然后打开vs命令行工具:

 

进入VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64目录执行
 
  1.   lib.exe /out:输出.lib的路径加文件名 /machine:x64 /def:输入def文件的路径和文件名
  2.   如:
  3.   lib.exe /out:D:\msys64\home\xxx\x264-master\x264_shared\bin\libx264-164.lib /machine:x64 /def:D:\msys64\home\xxx\x264-master\x264_shared\bin\libx264.def
 
  执行完成之后就会生成.lib文件了

 

2.编译x265

(1)把下载的代码解压到msys2家目录下,即:msys2/home/xxx/(这里xxx表示用户名) (2)进入源码包build/msys下,执行下面命令生成makefile
sh make-Makefiles.sh
  在弹出的窗口中首先修改安装路径,然后点击configure,最后点击generate生成makefile并关闭窗口 (3)开始编译
make -j8
  (4)安装
make install
  编译安装完成之后就可以看到生成的文件了

 

3.编译ffmpeg

(1)把下载的ffmpeg源码解压到msys2家目录下 (2)进入ffmpeg源码包下,新建一个编译脚本build.sh,脚本内容如下:
 
  1.   basepath=$(cd `dirname $0`;pwd)
  2.   echo ${basepath}
  3.   cd ${basepath}/ffmpeg
  4.    
  5.    
  6.   #添加x264 x265 pkg路径
  7.   x264_pkg_path=/home/xxxx/x264-master/x264_install/lib/pkgconfig
  8.   x265_pkg_path=/home/xxxx/x265_git/x265_install/lib/pkgconfig
  9.   export PKG_CONFIG_PATH=$x264_pkg_path:$x265_pkg_path:$PKG_CONFIG_PATH
  10.    
  11.    
  12.   ./configure --prefix=${basepath}/ffmpeg_install --disable-static --enable-shared \
  13.   --enable-libx264 --enable-libx265 --enable-gpl
  14.   make -j8
  15.   make install
 
    (3)然后在msys2中执行sh build.sh,等待编译完成

 

五,功能验证

1.x264验证

进入x264生成目录,执行下面命令,如果能够输出版本信息,则表示正常
./x264.exe --version
 

2.x265验证

进入x265生成目录,执行下面命令,如果能够输出版本信息,则表示正常
./x265.exe --version
 

3.ffmpeg验证

(1)把x264,x265编译生成的动态库拷贝到ffmpeg生成目录下(和ffmpeg.exe同一级) (2)执行下面命令,如果能够输出版本信息,则表示正常
./ffmpeg.exe --version
 

六,其它

1.关于Cannot load library avcodec-59.dll问题

这个问题是由于找不到依赖库导致,我们编译的时候是用Mingw编译的,编译出来的dll还依赖mingw里面的一些dll,打包的时候需要把这部分也放进去,关于查看dll依赖可以在vs命令行中通过以下命令查看:

dumpbin -imports xxx.dll
 

我这边实测下来编译出来的ffmpeg打包到其它平台还需要下面截图中的几个库,另外可能编译配置不一样依赖也会不一样,如果还是出现类似问题可以通过dumpbin命令查看导入缺少的dll。

2.博主编译的ffmpeg库链接

链接:https://pan.baidu.com/s/1tS1jRfbpccYEP-RpnXabeA 
提取码:05jf 

(编译出来的ffmpeg库还依赖其它库,建议把链接中的mingw依赖库也拷贝到可执行程序目录下)

参考博客链接

1.FFmpeg编译无坑版(Windows篇) - 简书

2. msys2在windows10下编译安装ffmpeg+x265_pxxian的博客-CSDN博客_msys2安装ffmpeg 3: ffmpeg5.0+h264+h265 windows下编译方法_老吕丶的博客-CSDN博客_ffmpeg 编译h264

标签:msys2,ffmpeg,编译,h264,h265,windows,x264,x265,安装
From: https://www.cnblogs.com/lidabo/p/16742470.html

相关文章

  • Windows10防止被自动关机(待测)
    1.公司每天十一点会自动关机,导致远程连接没法连,所以找了一些方案记录一下,具体是否有用还需要待测;本地安全策略-安全设置-本地策略-安全选项(直接点击),找到关机:允许系统在未......
  • Windows下文件搜索最佳神器
    你是不是有时候想找一个文件,但只记得文件名的几个字,然后在某个磁盘或目录下漫无目的的搜索,等了十几分钟也没找到你需要的文件?那你应该试试Everything了,一个Windows平台真正......
  • windows下MinGW64编译环境设置
    windows下MinGW64编译环境设置1.MinGW介绍MinGW的全称是:MinimalistGNUonWindows。是将经典的开源C语言编译器GCC移植到了Windows平台下,并且包含了WindowsA......
  • Windows 下 OpenSSH 安装使用
    OpenSSH是安全Shell(SSH)工具的开放源代码版本,Linux及其他非Windows系统的管理员使用此类工具跨平台管理远程系统。OpenSSH在2018年秋季已添加至Windows,并包含......
  • windows安装VMwareWorkstation问题汇总
    之前在window10平台下安装VMwareWorkstation,遇到各种问题,在此汇总遇到的一些问题和解决方案。一、蓝屏VMwareWorkstation虚拟机一打开就蓝屏解决方案打开Windows平台的​​......
  • Go环境搭建:windows+liteide
    Go语言环境安装请参考:​​Go语言环境安装​​Go语言环境测试请参考:​​Go语言环境测试​​LiteIDE安装LiteIDE是一款简单,开源,跨平台的GoIDE。官网:​​http://liteide.org......
  • Go环境搭建:windows+sublime3
    Go语言环境安装Go安装包下载网址:​​https://www.golangtc.com/download​​有zip压缩版和msi安装版两个按本下载。(这里使用msi安装版,比较方便)。运行msi安装文件,千万不要在......
  • windows像linux般使用gcc,make等工具
    ​​需要安装MinGW编译器。​​MinGW是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程......
  • windows 多进调用
    //testcrePro.cpp:定义控制台应用程序的入口点。//#include"stdafx.h"/*int_tmain(intargc,_TCHAR*argv[]){return0;}*/#include<iostream>#in......
  • windows环境下elasticsearch使用教程
    windows环境下elasticsearch使用教程如下:一、首先安装jdkElasticSearch是基于lucence开发的,lucence是apache开发的,因此ElasticSearch运行环境就需要javajdk支持。所以要......