编译环境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/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的安装也顺利结束了。

  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

windos下编译ffmpeg生成dll、lib库(开启265)相关推荐

  1. 照做就完事了:Mac下编译ffmpeg生成so文件

    下载ffmpeg源码 下载地址:www.ffmpeg.org/download.ht- 下载NDK 下载地址:user-gold-cdn.xitu.io/2019/4/10/1- 编写Android脚 ...

  2. linux编译ffmpeg成so,「ffmpeg」一 mac 环境下编译ffmpeg,生成so库文件

    1.下载ffmpeg源码,官网,我这里直接采用git 方式下载: 下载ffmpeg.png 终端输入git命令: 静静等待~ 最后下载的版本为3.4.6 . image.png 这里注意一下,刚开始我 ...

  3. 在Windows下编译FFmpeg详细说明

    在Windows下编译FFmpeg详细说明 MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时 Mi ...

  4. windows平台下使用cmake构建静态lib库以及使用静态lib库gtest项目

    有些时候我们需要将部分代码编译成单独的一个库,然后在另一个项目中去使用这个库 大部分是linux环境下的指令,但是也差不是很多 记录一下构建的经过 目录 1.使用cmake构建及使用lib库 构建li ...

  5. WINDOWS 下编译 ffmpeg 源码总结

    WINDOWS 下编译 ffmpeg 源码,有两种方式:VC.GCC 1.VC 编译:   https://github.com/ShiftMediaProject/FFVS-Project-Gene ...

  6. ffmpeg for android windows,windows10下编译ffmpeg for android

    最近实现了一款基于FFMpeg的支持多路视频的实时流媒体播放器:https://github.com/huweijian5/RtspPlayer 有兴趣能够关注下.html 本文记录在windows1 ...

  7. linux编译ffmepg,在Ubuntu下编译FFmpeg

    在之前,我们成功地使用mingw+msys在Windows平台下编译FFmpeg(见 http://www.linuxidc.com/Linux/2014-11/109839.htm),并生成了ffp ...

  8. Ubuntu下编译ffmpeg+openh264+x264

    [笔记] Ubuntu下编译ffmpeg+openh264+x264 原文:https://www.cnblogs.com/journeyonmyway/p/4648820.html - ffmpeg ...

  9. 【FFMPEG系列】之windows下编译FFMPEG篇----之三(MingW64)

    目录结构 序 1 .安装mingw64 1.1 mingw64的安装 1.2 msys的安装 2.编译ffmpeg 2.1 编译 序 前文"windows下编译FFMPEG篇----之一(M ...

最新文章

  1. fpga驱动rgb液晶屏_正点原子开拓者FPGA开发板资料连载第五十四章基于的数字识别实验...
  2. php怎么读取上传文件的md5,PHP获取上传文件的md5码_PHP教程
  3. 【Socket网络编程】7.以太网数据包、IP数据包、UDP数据包
  4. BZOJ-1875-HH去散步-SDOI2009-矩阵乘法
  5. CentOS 初体验二十二:redis常用命令:Hash
  6. 针对C64x+的一些优化经验
  7. 虚拟局域网Vlan与单臂路由、三层交换、链路聚合技术
  8. GBDT和RF的区别
  9. grep/egrep和正则表达式汇总
  10. 普及风险管理的一些环节
  11. 计算机论文的写作方法有哪些,计算机专业毕业论文的写作方法指导
  12. java怎么连接手机软件_如果是山寨机支持JAVA怎么用电脑往手机上下载软件
  13. 比特率和波特率有什么区别吗?
  14. 同花顺通达信公式指标改写成python实现代码,纯numpy,无循环!
  15. 在阿里 AI Lab 做 NLP 高级算法专家是一种什么样的体验?
  16. matlab 按照字符串运行,matlab中将字符串视为语句运行的方法——eval()函数
  17. 管道工程和这个管道铺设过程中的电缆卫士--电缆故障测试仪 电缆测距 故障定点 路径查找 电缆综合故障测试仪 FB11
  18. 超简单vue-devtools工具安装
  19. java面试技术准备
  20. python长沙培训学校,长沙python培训班价格

热门文章

  1. LSH︱python实现MinHash-LSH及MinHash LSH Forest——datasketch(四)
  2. 定制你自己的CRF模型以及JAVA实现的Word2Vec模型和一些java版NLP的工具
  3. Iterables和迭代器
  4. poj 1164城堡问题(DFS)
  5. 湖北省地税应用灾备中心正式启用
  6. VBNET常用字符串常量
  7. 开源公司黄页之Facebook开源软件推荐(一)
  8. 高质量响应式的 HTML/CSS 网站模板
  9. FastReport studio 动态加载数据集 (zhuan)
  10. 卡饭里的云计算机,微云可以在电脑用吗