• win10下编译ffmpeg + H264 + 支持H265的rtmp


    下载msys并安装相应环境

    参考:

    https://www.jianshu.com/p/5f175dec9109
    http://www.adintr.com/article/blog/328

    本人使用vs2019进行编译
    使用 适用于 VS 2019 的 x64 本机工具命令提示
    (本教程亦适用于其他VS版本)

    几点注意

    1. 重命名msys64/usr/bin/link.exe 为msys64/usr/bin/link.bak, 避免和MSVC 的link.exe抵触。

    2. 安装完成之后,先把安装目录下的msys2_shell.cmd中注释掉的
      rem set MSYS2_PATH_TYPE=inherit改成set MSYS2_PATH_TYPE=inherit
      这是为了将vs的环境继承给MSYS2。

    编译h264和h265

    参考:

    http://www.adintr.com/article/blog/328

    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 下

    几点注意

    1. H264与H265建议直接安装于msys目录下,其他位置亦可,编译时手动输入链接以保证位置无误。

    2. 安装过程中make什么找不到的,一律用pacman -S mingw-w64-x86_64-toolchain类似的安装。

    3. 启用H265 10位支持
      http://www.gregwessels.com/dev/2017/10/27/ffmpeg-x265.html
      编译H265打开HIGH_BIT_DEPTH
      另一个属性MAIN12可能会以红色突出显示。这是针对12位支持

    4. H265编译完,编译ffmpeg的时候会找不到,需要改一下名,上面的x265版本创建了一个名为x265-static.lib的静态库…将其重命名为x265.lib

    编译sdl acc相关

    参考:
    https://blog.csdn.net/xiaoluer/article/details/84714769

    解压下载的SDL源码包,例如放到D:\ffmpeg1.2\SDL-1.12.15目录,msys进入SDL目录,依次执行:

    ./configure -–prefix=/usr/local/SDL

    make

    make install

    几点注意

    1. 多看ffbuild log检测哪里出问题了
    2. 遇到lib找不到的一律用类似操作

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

    编译ffmpeg

    ffmpeg源码需要修改
    使用这个:https://github.com/WangLCG/C-plus-plus/tree/master/rtmp_hevc

    打开vs2019 x64本地工具
    打开msys2的mingw64窗口

    msys2_shell.cmd -mingw64

    在msys2窗口输入

    export PKG_CONFIG_PATH=/c/msys64/build/lib/pkgconfig:$PKG_CONFIG_PATH

    进入ffmpeg文件夹执行:

    ./configure --toolchain=msvc --target-os=win64
    –arch=x86_64
    –enable-shared
    –enable-small
    –enable-version3
    –enable-gpl
    –enable-asm
    –enable-nonfree
    –enable-encoder=libx264
    –enable-encoder=libx265
    –enable-encoder=hevc
    –enable-encoder=mjpeg
    –enable-encoder=mpeg4
    –enable-encoder=aac
    –enable-libx264
    –enable-libx265
    –enable-decoder=h264
    –enable-decoder=h265
    –enable-decoder=aac
    –enable-decoder=hevc
    –enable-demuxer=aac
    –enable-demuxer=mov
    –enable-demuxer=mpegts
    –enable-demuxer=flv
    –enable-demuxer=h264
    –enable-demuxer=h265
    –enable-demuxer=hevc
    –enable-demuxer=hls
    –enable-demuxer=rtp
    –enable-demuxer=rtsp
    –enable-demuxer=rtmp
    –enable-protocol=udp
    –enable-protocol=rtp
    –enable-protocol=tcp
    –enable-muxer=h264
    –enable-muxer=h265
    –enable-muxer=hevc
    –enable-muxer=flv
    –enable-muxer=f4v
    –enable-muxer=mp4
    –enable-muxer=rtp
    –enable-muxer=rtsp
    –enable-muxer=rtmp
    –enable-network
    –disable-doc
    –enable-ffplay
    –prefix=./build
    –extra-cflags="-I/c/msys64/build/include"
    –extra-ldflags="-LIBPATH:/c/msys64/build/lib"

    编译

    make -j12

    安装

    make install

    注意

    1. config完,把ffmpeg文件的config.h转为utf-8再make,不然编码warning很烦。

    2. 每次重写编译需要执行

      make clean
      make distclean
      ls -l /.o

      否则会出问题。

    3. ffmpeg ./configure链接多个地址,可用如下方式

      –extra-cflags="-I/c/msys64/mingw64/include -I/c/msys64/mingw64/include"
      –extra-ldflags="-LIBPATH:/c/msys64/build/lib -LIBPATH:/c/msys64/mingw64/lib"

    4. 遇到任何问题,查看ffbuild的log,见招拆招即可。

  • 相关阅读:
    Lucene 全文检索入门
    Elastic Stack 笔记(九)Elasticsearch5.6 集群管理
    Elastic Stack 笔记(八)Elasticsearch5.6 Java API
    Elastic Stack 笔记(七)Elasticsearch5.6 聚合分析
    Elastic Stack 笔记(六)Elasticsearch5.6 搜索详解
    Elastic Stack 笔记(五)Elasticsearch5.6 Mappings 映射
    JAVA中的static
    类继承和初始化类的执行顺序
    java继承 初始化顺序
    分析java类的初始化契机
  • 原文地址:https://www.cnblogs.com/Archger/p/16270259.html
Copyright © 2020-2023  润新知