adie's blog |
Windows平台编译 ffmpeg 一 (含H265 on RTMP, libsrt)
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 添加 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邮箱。万分感谢
|