A!die Software Studio Welcome to A!Die Software Studio

Windows平台编译 ffmpeg 一 (含H265 on RTMP, libsrt)

by adie
2020-03-25 18:06:05

1. 下载源代码: 

    git clone https://github.com/adintr/FFmpeg.git

    git checkout rtmp265

2. 安装 Visual C++ 2017

3. 安装 MSYS2, 64 位版本 http://www.msys2.org/

4. 安装基本环境:

   pacman -S vim

   pacman -S git

   pacman -S --disable-download-timeout base-devel

5. 安装 MinGW:
   pacman -S --disable-download-timeout gcc

   pacman -S --disable-download-timeout mingw-w64-x86_64-toolchain

   pacman -S --disable-download-timeout yasm

   pacman -S --disable-download-timeout nasm

6. 修改 msys2_shell.cmd 文件:

    取消:  rem set MSYS2_PATH_TYPE=inherit 的注释.

    添加:  call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvars64.bat"

7. msys64\usr\bin\link.exe 改名 glink.exe, 避免和 VC 的 link 程序冲突.

    拷贝 msys64\mingw64\bin\tclsh.exe 到 msys64/usr/bin/tclsh.exe

8. 安装依赖包

    pacman -S openssl

    pacman -S libopenssl

9. 编译 libsrt

     1) git clone https://github.com/Haivision/srt.git

     2) git clone https://github.com/GerHobbelt/pthread-win32.git

     3) 直接打开 pthread-win32 下的 VC 工程编译 Release, 64, 按照 https://github.com/Haivision/srt 的说明拷贝 lib 和头文件.

     4) 修改 srt 代码目录下的 configure 程序,  只打印运行的 cmake 命令行, 不执行.

     ./configure --disable-static --enable-shared --pthread-include-dir=/e/study/ffmpeg/3rdlibs/pthread-win32/include/ --pthread-library=/e/study/ffmpeg/3rdlibs/pthread-win32/lib/ --pkg-config-executable=E:\study\ffmpeg\msys64\mingw64\bin\pkg-config.exe

     5) 拷贝 cmake 命令并添加参数:

     -G"Visual Studio 15 2017 Win64"

     -B编译路径

     cmake . -DENABLE_STATIC=0 -DENABLE_SHARED=1 -DPTHREAD_INCLUDE_DIR=E:/study/ffmpeg/3rdlibs/pthread-win32/include/ -DPTHREAD_LIBRARY=E:/study/ffmpeg/3rdlibs/pthread-win32/lib/ -DPKG_CONFIG_EXECUTABLE=E:/study/ffmpeg/msys64/mingw64/bin/pkg-config.exe -G"Visual Studio 15 2017 Win64" -B/e/study/ffmpeg/3rdlibs/srt/build

    6) 打开 IDE 编译工程

       1> 连接选项中的:

            ssl.lib => libssl.a

           crypto.lib => libcrypto.a

           ws2_32.lib =>并添加路径 E:\study\ffmpeg\msys64\usr\lib\w32api
           libws2_32.a => 并添加路径 msys64\mingw64\x86_64-w64-mingw32\lib

           添加 pthread_lib.lib 和路径

           添加 libgcc.a 和路径 msys64\usr\lib\gcc\x86_64-pc-msys\7.4.0

           添加 legacy_stdio_definitions.lib

     2>  确保解决方案中所有工程编译成功

   7) 拷贝 haisrt.pc 和  srt.pc 文件到 msys64\mingw64\lib\pkgconfig 中, 并修改其中的路径.

10. 配置:

    ./configure --disable-static --enable-shared --toolchain=msvc --arch=x86_64 --extra-ldflags="-static-libgcc" --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib --enable-libsrt

11. make -j8

     修改使用  CC_IDENY 宏导致的错误后继续编译.

12. make install

     编译好的文件在 usr\local\bin 下面, 拷贝 srt.dll 过来后可以运行.

 

==================================================== 加入 libx264 和 libx265

1. 编译安装 libx264

  1)  git clone https://code.videolan.org/videolan/x264.git

2) ./configure --enable-static --enable-shared --host=x86_64-w64-mingw64

3) make

4) make install

5) export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig

6) 修改 /usr/local/lib/pkgconfig/x264.pc 中的路径.

ln -s /usr/local/lib/libx264.dll.a libx264.lib

2 编译安装 libx265

1) 下载 x265_3.2.1.tar.gz https://bitbucket.org/multicoreware/x265/downloads/

  2) 解压运行 x265_3.2.1\build\vc15-x86_64\make-solutions.bat 生成 VC 工程

  3) 打开工程编译 64 位 Release

  4) 拷贝 x265.pc 到 /usr/local/lib/pkgconfig 下

      拷贝 libx265.lib 到 /usr/local/lib 下

      拷贝 x265.h, x265_config.h 到 /usr/local/include 下

3. 运行:

  make clean

    ./configure --disable-static --enable-shared --toolchain=msvc --arch=x86_64 --enable-libsrt --enable-libx264 --enable-libx265 --enable-gpl --enable-encoder=libx264 --enable-encoder=libx265 --extra-cflags="-I/usr/local/include" --extra-ldflags="-libpath:/usr/local/lib"

  make

  make install

==================================================== 加入 nvenc 和 nvdec

1. 下载安装 CUDA, 下载 NVIDIA VIDEO CODEC SDK 9.0: https://developer.nvidia.com/video-codec-sdk-archive 解压

   1) 拷贝 include 目录下的文件到 /usr/local/include

   2) 拷贝 lib\x64 下的文件到 /usr/local/lib

2. 安装相关头文件:

   1)  git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git

   2)  git checkout n9.0.18.3

   3)  make

   4)  make install

3. 编译

    ./configure --disable-static --enable-shared --toolchain=msvc --arch=x86_64 --enable-libsrt --enable-libx264 --enable-libx265 --enable-gpl --enable-cuda --enable-cuvid --enable-nvenc --enable-nonfree --enable-encoder=libx264 --enable-encoder=libx265 --extra-cflags="-I/usr/local/include" --extra-ldflags="-libpath:/usr/local/lib"

    make

    make install


 


▲评论

› 网友 匿名 () 于 2020-03-11 23:04:15 发表评论说:

能否发一份编译好得到744092553#qq邮箱。万分感谢

X 正在回复:
姓 名: 留下更多信息
性 别:
邮 件:
主 页:
Q Q:
来 自:
职 业:
评 论:
验 证:


Valid HTML 4.01 Strict Valid CSS!
Copyleft.A!die Software Studio.ADSS
Power by webmaster@adintr.com