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

  1. 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 install

  2. Build 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安装
注意:

  1. msys2不可以安装在FAT*分区
  2. msys2不能安装在winXP系统上
  3. 双击msys2-x86_64-20190524.exe,并点击下一步选择安装文件夹。

注意:安装文件路径要短,不能有空格,只能用ASCII字符,不能用单引号。

然后下一步直到开始安装

  1. 安装完成后点击完 成退出安装程序

注意:此处不要勾选"立即运行 MSYS2 64bit",因为接下来要配置国内更新源。

  1. 配置国内更新源
    这里选用中科大的源,也可以搜索其他的源,如阿里云,清华大学等的源。

修改“安装位置\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/ a r c h / S e r v e r = h t t p : / / r e p o . m s y s 2. o r g / m s y s / arch/ Server = http://repo.msys2.org/msys/ arch/Server=http://repo.msys2.org/msys/arch
Server = https://downloads.sourceforge.net/project/msys2/REPOS/MSYS2/ a r c h S e r v e r = h t t p : / / w w w 2. f u t u r e w a r e . a t /   n i c k o e / m s y s 2 − m i r r o r / m s y s / arch Server = http://www2.futureware.at/~nickoe/msys2-mirror/msys/ archServer=http://www2.futureware.at/ nickoe/msys2mirror/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的安装也顺利结束了。

  1. 安装编译环境
    安装msys2是为了写程序、编译程序,因此编译环境的安装还是必要的。

1) 安装基本工具

命令:pacman -S base-devel(默认全部安装)

$ pacman -S base-devel
:: 在组 base-devel 中有 56 成员:
:: 软件仓库 msys

  1. asciidoc 2) autoconf 3) autoconf2.13 4) autogen 5) automake-wrapper 6) automake1.10 7) automake1.11
  2. automake1.12 9) automake1.13 10) automake1.14 11) automake1.15 12) automake1.16 13) automake1.6
  3. automake1.7 15) automake1.8 16) automake1.9 17) bison 18) diffstat 19) diffutils 20) dos2unix 21) file
  4. flex 23) gawk 24) gdb 25) gettext 26) gettext-devel 27) gperf 28) grep 29) groff 30) help2man
  5. intltool 32) lemon 33) libtool 34) libunrar 35) libunrar-devel 36) m4 37) make 38) man-db 39) pacman
  6. pactoys-git 41) patch 42) patchutils 43) perl 44) pkg-config 45) pkgfile 46) quilt 47) rcs 48) scons
  7. 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

  1. 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
  2. mingw-w64-x86_64-gcc-fortran 6) mingw-w64-x86_64-gcc-libgfortran 7) mingw-w64-x86_64-gcc-libs
  3. mingw-w64-x86_64-gcc-objc 9) mingw-w64-x86_64-gdb 10) mingw-w64-x86_64-headers-git
  4. mingw-w64-x86_64-libmangle-git 12) mingw-w64-x86_64-libwinpthread-git 13) mingw-w64-x86_64-make
  5. mingw-w64-x86_64-pkg-config 15) mingw-w64-x86_64-tools-git 16) mingw-w64-x86_64-winpthreads-git
  6. 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安装

  1. 解压

把安装包“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安装

  1. 解压

把安装包“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分钟,耐心等待。

  1. 编译与安装

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值