windos下编译ffmpeg生成dll、lib库(开启265)
编译环境Win 64位+MSYS2
一.安装MSYS2
1.下载msys.exe,https://www.msys2.org/
2.安装msys
3.运行msys并执行命令pacman -Syu,一律输入Y同意,执行结束后会自动关闭,再次打开msys后执行pacman -Syu
4.执行下列命令安装依赖包
复制代码
pacman -S make
pacman -S diffutils
pacman -S yasm
pacman -S nasm
pacman -S mingw-w64-x86_64-gcc
pacman -S mingw-w64-i686-gcc
pacman -S mingw-w64-x86_64-gtk3
pacman -S mingw-w64-i686-gtk3
pacman -S git
复制代码
5.下载pkg-config,https://download.gnome.org/binaries/,把win64的exe复制到mingw64\bin下,把win32的exe复制到mingw32\bin下
6.执行下列命令修改相关后缀
复制代码
cd /mingw32/bin/
cp libintl-8.dll intl.dll
cd /mingw32/i686-w64-mingw32/lib/
mv libpthread.dll.a libpthread.dll.a-org && mv libwinpthread.dll.a libwinpthread.dll.a-org
cd /mingw32/lib
mv libbz2.dll.a libbz2.dll.a-org && mv libz.dll.a libz.dll.a-org
mv libiconv.dll.a libiconv.dll.a-org && mv liblzma.dll.a liblzma.dll.a-org
cd /mingw64/bin/
cp libintl-8.dll intl.dll
cd /mingw64/x86_64-w64-mingw32/lib/
mv libpthread.dll.a libpthread.dll.a-org && mv libwinpthread.dll.a libwinpthread.dll.a-org
cd /mingw64/lib
mv libbz2.dll.a libbz2.dll.a-org && mv libz.dll.a libz.dll.a-org
mv libiconv.dll.a libiconv.dll.a-org && mv liblzma.dll.a liblzma.dll.a-org
复制代码
二.准备源码
1.FFmpeg
官网下载即可
2.x264
wget https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2
tar -jxvf /home/x264-master.tar.bz2 -C /home/x264
可能tar解压失败,直接去文件路径下rar解压也行。
3.amf
wget https://github.com/GPUOpen-LibrariesAndSDKs/AMF/archive/1.4.16.1.tar.gz
tar -zxvf /home/AMF-1.4.16.1.tar.gz -C /home
cp -r /home/AMF-1.4.16.1/amf/public/include/* /usr/local/include/AMF
如果/usr/local/include/AMF不存在,手动mkdir一个。
4.ffnvcodec
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
make & make install
三.编译
1.编译32位DLL
打开MSYS2 MinGW 32
编译x264
复制代码
cd /home/x264-master/
./configure
–prefix=/mingw32
–enable-static
–host=msys
–disable-cli
make clean
make -j6 #改成你的CPU核心数,6表示编译时占用6核
make install
复制代码
编译成功后将看到下列打印信息
install -d /mingw64/include /mingw64/lib/pkgconfig
install -m 644 ./x264.h x264_config.h /mingw64/include
install -m 644 x264.pc /mingw64/lib/pkgconfig
install -d /mingw64/lib
install -m 644 libx264.a /mingw64/lib
gcc-ranlib /mingw64/lib/libx264.a
编译FFmpeg
在ffmpeg根目录下建立build.sh,将下面的脚本保存其中
复制代码
#!/bin/bash
PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"
PREFIX="./bin-$1"
echo “Install dir: KaTeX parse error: Undefined control sequence: \ at position 21: …X" ./configure \̲ ̲--prefix=PREFIX
–extra-ldsoflags=”-static-libgcc"
–extra-cflags="-I/usr/local/include"
–extra-ldflags="-L/usr/local/lib"
–disable-iconv
–disable-doc
–disable-debug
–disable-avdevice
–disable-indevs
–disable-outdevs
–disable-postproc
–disable-ffplay
–disable-ffprobe
–disable-encoders
–disable-decoders
–enable-small
–enable-shared
–enable-ffmpeg
–enable-version3
–enable-nonfree
–enable-w32threads
–enable-avcodec
–enable-avformat
–enable-swresample
–enable-swscale
–enable-avfilter
–enable-gpl
–enable-amf
–enable-nvenc
–enable-x86asm
–enable-libx264
–enable-encoder=flv
–enable-encoder=h264_nvenc
–enable-encoder=h264_amf
–enable-encoder=hevc_nvenc
–enable-encoder=hevc_amf
–enable-encoder=libx264
–enable-encoder=pcm_s16le
–enable-encoder=pcm_s24le
–enable-encoder=aac
–enable-encoder=ac3
–enable-encoder=dca
–enable-encoder=opus
–enable-encoder=vorbis
–enable-encoder=srt
–enable-encoder=ass
–enable-encoder=subrip
–enable-encoder=mjpeg
–enable-encoder=gif
–enable-decoder=mpeg4
–enable-decoder=flv
–enable-decoder=h264
–enable-decoder=hevc
–enable-decoder=vp9
–enable-decoder=h264_cuvid
–enable-decoder=hevc_cuvid
–enable-decoder=vp9_cuvid
–enable-decoder=opus
–enable-decoder=vorbis
–enable-decoder=aac
–enable-decoder=ac3
–enable-decoder=eac3
–enable-decoder=srt
–enable-decoder=ass
–enable-decoder=subrip
–enable-decoder=pcm_s16le
–enable-decoder=pcm_s24le
–enable-decoder=dca
–enable-decoder=mp3
–enable-decoder=flac
–enable-decoder=ape
–enable-decoder=mjpeg
make clean
make -j6 #改成你的CPU核心数
make install
复制代码
然后返回32位终端,执行命令开始编译
#切到FFmpeg根目录
cd /home/FFmpeg-n4.3.1
#编译
./build.sh 32
执行config比较慢,如果编译成功,会在/home/FFmpeg/bin-32/bin目录下生成下列文件
复制代码
avcodec.lib
avfilter.lib
avformat.lib
avutil.lib
swresample-3.dll
swscale-5.dll
avcodec-58.dll
avfilter-7.dll
avformat-58.dll
avutil-56.dll
ffmpeg.exe
swresample.lib
swscale.lib
复制代码
2.编译64位DLL
打开MSYS2 MinGW 64
编译x264
复制代码
cd /home/x264-master/
./configure
–prefix=/mingw64
–enable-static
–disable-cli
make clean
make -j6 #改成你的CPU核心数
make install
复制代码
编译FFmpeg
直接使用1.2中的脚本
#切到FFmpeg根目录
cd /home/FFmpeg-n4.3.1
#编译
./build.sh 64
3.编译中可能出现的错误
No working C compiler found:
请确认编译是否在对应的终端中进行,编译32位必须在MSYS2 MinGW 32-bit启动的终端中进行,编译64位必须在 MSYS2 MinGW 64-bit启动的终端中进行。
ERROR: amf requested but not found:
出现次错误表示未在/usr/local/include/AMF目录下找到AMF头文件.
ERROR: nvenc requested, but not all dependencies are satisfied: ffnvcodec:
确保/usr/local/lib/pkgconfig目录下存在ffnvcodec.pc。
ERROR: libx264 not found:
x264未编译成功,确保/mingw64/lib和/mingw32/lib目录下都能找到libx264.a
smart rtmpd 服务器支持 rtmp 的 hevc(h265) 视频流,我们具体 smart rtmpd 的信息简介如下,毕竟 hevc(h265) 不是 adobe 的标准,所以市面上缺少这么一款工具,下面的流程,就会带你怎么制作 ffmpeg ,让其支持自定制的 hevc(h265) 视频流
原文地址:http://www.qiyicc.com/bbs001/forum.php?mod=viewthread&tid=989&extra=page%3D1
一分钟快速搭建 rtmpd 服务器: https://blog.csdn.net/freeabc/article/details/102880984
软件下载地址: http://www.qiyicc.com/download/rtmpd.rar
github 地址:https://github.com/superconvert/smart_rtmpd
Build x265
$wget https://bitbucket.org/multicorew … s/x265_3.2.1.tar.gz
$tar zxvf x265_3.2.1.tar.gz
$cd x265_3.2.1/build/linux
$./make-Makefiles.bash
$make && make installBuild ffmpeg
2.1 Prepare souce code
$git clone https://github.com/ksvc/FFmpeg.git
$cd FFmpeg
$git reset --hard origin/release/3.4
2.2 Configure
./configure --enable-static --enable-pic
–disable-encoders --enable-encoder=aac --enable-encoder=libx264 --enable-gpl --enable-libx264 --enable-encoder=libx265 \
--enable-libx265 --disable-decoders --enable-decoder=aac --enable-decoder=h264 --enable-decoder=hevc --disable-demuxers \--enable-demuxer=aac --enable-demuxer=mov --enable-demuxer=mpegts --enable-demuxer=flv --enable-demuxer=h264 \--enable-demuxer=hevc --enable-demuxer=hls --disable-muxers --enable-muxer=h264 --enable-muxer=flv --enable-muxer=f4v \--enable-muxer=mp4 --disable-doc --extra-cflags="-fno-stack-check"
2.3 Build
$make -j4
2.4 Ttry
#push stream
$./ffmpeg -re -i 1.mp4 -c:a copy -c:v libx265 -f flv rtmp://192.168.1.1/live/hevc
#pull stream
$./ffplay rtmp://192.168.1.1/live/hevc
一、下载
1.1 msys2下载
下载地址:http://www.msys2.org/
安装包:msys2-x86_64-20190524.exe(当前最新的)
1.2 x265下载
下载地址:http://ftp.videolan.org/pub/videolan/x265/
安装包:x265_3.1.1.tar.gz(当前最新的)
1.3 ffmpeg下载
下载地址:http://ffmpeg.org/download.html#releases
安装包:ffmpeg-3.3.9.tar.gz(生产使用)
二、安装
2.1 msys2安装
注意:
- msys2不可以安装在FAT*分区
- msys2不能安装在winXP系统上
- 双击msys2-x86_64-20190524.exe,并点击下一步选择安装文件夹。
注意:安装文件路径要短,不能有空格,只能用ASCII字符,不能用单引号。
然后下一步直到开始安装
- 安装完成后点击完 成退出安装程序
注意:此处不要勾选"立即运行 MSYS2 64bit",因为接下来要配置国内更新源。
- 配置国内更新源
这里选用中科大的源,也可以搜索其他的源,如阿里云,清华大学等的源。
修改“安装位置\etc\pacman.d”中的三个配置文件
mirrorlist.msys
mirrorlist.mingw32
mirrorlist.mingw64
1) 在mirrorlist.msys中添加
Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch/
添加后的文件内容如下:
MSYS2 repository mirrorlist
Primary
msys2.org
Server = http://mirrors.ustc.edu.cn/msys2/msys/arch/Server=http://repo.msys2.org/msys/arch/ Server = http://repo.msys2.org/msys/arch/Server=http://repo.msys2.org/msys/arch
Server = https://downloads.sourceforge.net/project/msys2/REPOS/MSYS2/archServer=http://www2.futureware.at/nickoe/msys2−mirror/msys/arch Server = http://www2.futureware.at/~nickoe/msys2-mirror/msys/archServer=http://www2.futureware.at/ nickoe/msys2−mirror/msys/arch/
2)在mirrorlist.mingw32中添加
Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686/
添加后文件内容如下:
32-bit Mingw-w64 repository mirrorlist
Primary
msys2.org
Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686/
Server = http://repo.msys2.org/mingw/i686
Server = https://downloads.sourceforge.net/project/msys2/REPOS/MINGW/i686
Server = http://www2.futureware.at/~nickoe/msys2-mirror/mingw/i686
3)在mirrorlist.mingw64中添加
Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64/
添加后文件内容如下:
64-bit Mingw-w64 repository mirrorlist
Primary
msys2.org
Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64/
Server = http://repo.msys2.org/mingw/x86_64
Server = https://downloads.sourceforge.net/project/msys2/REPOS/MINGW/x86_64
Server = http://www2.futureware.at/~nickoe/msys2-mirror/mingw/x86_64
4. 打开菜单中的“MSYS2 MinGW 64-bit”
打开“MSYS2 MinGW 64-bit”,以后也一直使用“MSYS2 MinGW 64-bit”。
打开后执行命令pacman -Syu更新系统核心和各种包等,如下面的截图:
输入“Y”键开始更新。
注意: 更新时会遇到下图的警告,这时一定要点击右上角的X来关闭窗口。
关闭窗口时会弹出一个对话框(如下图),点击OK。
上面的更新没有结束,需要继续更新。再次打开“MSYS2 MinGW 64-bit”,再执行一次pacman -Syu
这样更新就可以顺利结束了,msys2的安装也顺利结束了。
- 安装编译环境
安装msys2是为了写程序、编译程序,因此编译环境的安装还是必要的。
1) 安装基本工具
命令:pacman -S base-devel(默认全部安装)
$ pacman -S base-devel
:: 在组 base-devel 中有 56 成员:
:: 软件仓库 msys
- asciidoc 2) autoconf 3) autoconf2.13 4) autogen 5) automake-wrapper 6) automake1.10 7) automake1.11
- automake1.12 9) automake1.13 10) automake1.14 11) automake1.15 12) automake1.16 13) automake1.6
- automake1.7 15) automake1.8 16) automake1.9 17) bison 18) diffstat 19) diffutils 20) dos2unix 21) file
- flex 23) gawk 24) gdb 25) gettext 26) gettext-devel 27) gperf 28) grep 29) groff 30) help2man
- intltool 32) lemon 33) libtool 34) libunrar 35) libunrar-devel 36) m4 37) make 38) man-db 39) pacman
- pactoys-git 41) patch 42) patchutils 43) perl 44) pkg-config 45) pkgfile 46) quilt 47) rcs 48) scons
- sed 50) swig 51) texinfo 52) texinfo-tex 53) ttyrec 54) unrar 55) wget 56) xmlto
输入某个选择 ( 默认=全部选定 ):
2)安装编译工具,包括gcc,make等。
命令:pacman -S mingw-w64-x86_64-toolchain(默认全部安装)
$ pacman -S mingw-w64-x86_64-toolchain
:: 在组 mingw-w64-x86_64-toolchain 中有 17 成员:
:: 软件仓库 mingw64
- mingw-w64-x86_64-binutils 2) mingw-w64-x86_64-crt-git 3) mingw-w64-x86_64-gcc 4) mingw-w64-x86_64-gcc-ada
- mingw-w64-x86_64-gcc-fortran 6) mingw-w64-x86_64-gcc-libgfortran 7) mingw-w64-x86_64-gcc-libs
- mingw-w64-x86_64-gcc-objc 9) mingw-w64-x86_64-gdb 10) mingw-w64-x86_64-headers-git
- mingw-w64-x86_64-libmangle-git 12) mingw-w64-x86_64-libwinpthread-git 13) mingw-w64-x86_64-make
- mingw-w64-x86_64-pkg-config 15) mingw-w64-x86_64-tools-git 16) mingw-w64-x86_64-winpthreads-git
- mingw-w64-x86_64-winstorecompat-git
输入某个选择 ( 默认=全部选定 ):
注意:如果想要编译的程序在windows环境下运行,记得要静态编译
3)安装其他依赖库
汇编
pacman -S yasm
pacman -S nasm
安装cmkae
pacman -S mingw-w64-x86_64-cmake
如需编译ffplayer,还需安装SDL
pacman -S mingw-w64-x86_64-SDL2
或许要装,没对比过
pacman -S mingw-w64-x86_64-SDL2_gfx mingw-w64-x86_64-SDL2_image mingw-w64-x86_64-SDL2_mixer mingw-w64-x86_64-SDL2_net mingw-w64-x86_64-SDL2_ttf mingw-w64-x86_64-SDL_gfx
2.2 x265安装
- 解压
把安装包“x265_3.1.1.tar.gz”拷贝到“安装位置\home\用户\”路径下。
在打开的“MSYS2 MinGW 64-bit”窗口操作。
cd ~
tar xvf x265_3.1.1.tar.gz
mv x265_3.1.1 x265
2. 配置
cd x265/build/msys/
修改make-Makefiles.sh,添加安装路径-DCMAKE_INSTALL_PREFIX=/usr/local。添加后内容如下:
#!/bin/sh
Run this from within an MSYS bash shell
cmake -G “MSYS Makefiles” -DCMAKE_INSTALL_PREFIX=/usr/local …/…/source && cmake-gui …/…/source
执行配置
$ ./make-Makefiles.sh
3. 编译与安装
make
make install
2.3 ffmpeg安装
- 解压
把安装包“ffmpeg-3.3.2.tar.bz2”拷贝到“安装位置\home\用户\”路径下。
在打开的“MSYS2 MinGW 64-bit”窗口操作。
cd ~
tar xvf ffmpeg-3.3.2.tar.bz2
2. 配置
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig":$PKG_CONFIG_PATH
cd ffmpeg-3.3.2
./configure --enable-gpl --enable-libx265 --enable-shared
configure配置大概需要10分钟,耐心等待。
- 编译与安装
make
make install
make编译大概需要20分钟,耐心等待。
如当前计算机是多核(数量为:n),可以采用make -jn(如:make -j4),可以快一些。
三、验证
3.1 x265验证
$ which x265
/usr/local/bin/x265
$ x265 --version
x265 [info]: HEVC encoder version 3.1+5-9c5c9cef2a86
x265 [info]: build info [Windows][GCC 9.1.0][64 bit] 8bit
x265 [info]: using cpu capabilities: MMX2 SSE2Fast LZCNT SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
3.2 ffmpeg验证
$ which ffmpeg
/usr/local/bin/ffmpeg
$ ffmpeg -version
ffmpeg version 3.3.2 Copyright © 2000-2017 the FFmpeg developers
built with gcc 9.1.0 (Rev3, Built by MSYS2 project)
configuration: --enable-gpl --enable-libx265 --enable-shared
libavutil 55. 58.100 / 55. 58.100
libavcodec 57. 89.100 / 57. 89.100
libavformat 57. 71.100 / 57. 71.100
libavdevice 57. 6.100 / 57. 6.100
libavfilter 6. 82.100 / 6. 82.100
libswscale 4. 6.100 / 4. 6.100
libswresample 2. 7.100 / 2. 7.100
libpostproc 54. 5.100 / 54. 5.100
windos下编译ffmpeg生成dll、lib库(开启265)相关推荐
- 照做就完事了:Mac下编译ffmpeg生成so文件
下载ffmpeg源码 下载地址:www.ffmpeg.org/download.ht- 下载NDK 下载地址:user-gold-cdn.xitu.io/2019/4/10/1- 编写Android脚 ...
- linux编译ffmpeg成so,「ffmpeg」一 mac 环境下编译ffmpeg,生成so库文件
1.下载ffmpeg源码,官网,我这里直接采用git 方式下载: 下载ffmpeg.png 终端输入git命令: 静静等待~ 最后下载的版本为3.4.6 . image.png 这里注意一下,刚开始我 ...
- 在Windows下编译FFmpeg详细说明
在Windows下编译FFmpeg详细说明 MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时 Mi ...
- windows平台下使用cmake构建静态lib库以及使用静态lib库gtest项目
有些时候我们需要将部分代码编译成单独的一个库,然后在另一个项目中去使用这个库 大部分是linux环境下的指令,但是也差不是很多 记录一下构建的经过 目录 1.使用cmake构建及使用lib库 构建li ...
- WINDOWS 下编译 ffmpeg 源码总结
WINDOWS 下编译 ffmpeg 源码,有两种方式:VC.GCC 1.VC 编译: https://github.com/ShiftMediaProject/FFVS-Project-Gene ...
- ffmpeg for android windows,windows10下编译ffmpeg for android
最近实现了一款基于FFMpeg的支持多路视频的实时流媒体播放器:https://github.com/huweijian5/RtspPlayer 有兴趣能够关注下.html 本文记录在windows1 ...
- linux编译ffmepg,在Ubuntu下编译FFmpeg
在之前,我们成功地使用mingw+msys在Windows平台下编译FFmpeg(见 http://www.linuxidc.com/Linux/2014-11/109839.htm),并生成了ffp ...
- Ubuntu下编译ffmpeg+openh264+x264
[笔记] Ubuntu下编译ffmpeg+openh264+x264 原文:https://www.cnblogs.com/journeyonmyway/p/4648820.html - ffmpeg ...
- 【FFMPEG系列】之windows下编译FFMPEG篇----之三(MingW64)
目录结构 序 1 .安装mingw64 1.1 mingw64的安装 1.2 msys的安装 2.编译ffmpeg 2.1 编译 序 前文"windows下编译FFMPEG篇----之一(M ...
最新文章
- fpga驱动rgb液晶屏_正点原子开拓者FPGA开发板资料连载第五十四章基于的数字识别实验...
- php怎么读取上传文件的md5,PHP获取上传文件的md5码_PHP教程
- 【Socket网络编程】7.以太网数据包、IP数据包、UDP数据包
- BZOJ-1875-HH去散步-SDOI2009-矩阵乘法
- CentOS 初体验二十二:redis常用命令:Hash
- 针对C64x+的一些优化经验
- 虚拟局域网Vlan与单臂路由、三层交换、链路聚合技术
- GBDT和RF的区别
- grep/egrep和正则表达式汇总
- 普及风险管理的一些环节
- 计算机论文的写作方法有哪些,计算机专业毕业论文的写作方法指导
- java怎么连接手机软件_如果是山寨机支持JAVA怎么用电脑往手机上下载软件
- 比特率和波特率有什么区别吗?
- 同花顺通达信公式指标改写成python实现代码,纯numpy,无循环!
- 在阿里 AI Lab 做 NLP 高级算法专家是一种什么样的体验?
- matlab 按照字符串运行,matlab中将字符串视为语句运行的方法——eval()函数
- 管道工程和这个管道铺设过程中的电缆卫士--电缆故障测试仪 电缆测距 故障定点 路径查找 电缆综合故障测试仪 FB11
- 超简单vue-devtools工具安装
- java面试技术准备
- python长沙培训学校,长沙python培训班价格