• mingw64 编译ffmpeg 64 for Windows Width CUDA


     Download msys2

    首先我们在http://msys2.github.io/ 下载msys2

    lauch mingw64 

     msys2_shell.cmd -mingw64

    install gcc g++

    pacman -S gcc make pkg-config vim

    pacman -Sl | grep "gcc"查看gcc是否安装完成

    关闭mingw 然后写一个bat脚本来启动mingw64

    set MSYS2_PATH_TYPE=inherit

    call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"

    msys2_shell.cmd -mingw64

    install CUDA codec headers

    git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
    cd nv-codec-headers
    make
    sudo make install

    if you need low version, you should git fetch origin sdk/8.0 && git checkout sdk/8.0

    Compile && install
    PKG_CONFIG_PATH="/usr/local/lib/pkgconfig" ./configure --prefix=./build \
        --extra-cflags="-I/usr/local/include" \--arch=x86_64 --toolchain=msvc --as=yasm \
        --enable-static \
        --disable-shared \--enable-cuvid \
        --enable-nvenc \
        --enable-nonfree \
    --disable-filters

    make

    make install

    如果需要编译cuda 滤镜  需要加上这两个

        --enable-cuda \
        --enable-cuda-nvcc \

    若使用Clang 编译

    步骤和上述类似, 只是有两个地方需要更改

    • 启动msys2 后面的选项为   msys2_shell.cmd -clang64
    • --extra-ldflags 加入 msvcrt.lib

    可能遇到的问题

    uncoded_frame' doesn't match the target pattern

    解决办法 ffmpeg 不知道改了啥东西, 删了重新编译就好了

    ffnvcode 依赖问题

    编译nv的那个头文件库, 记得PKG_CONFIG_PATH 设置为/usr/local/lib/pkgconfig

    使用时出现 MFCreateMediaType

    avcodec.lib(mfenc.o) : error LNK2019: 无法解析的外部符号 MFCreateMediaType,函数 mf_choose_output_type 中引用了该符号
    1>avcodec.lib(mfenc.o) : error LNK2001: 无法解析的外部符号 IID_ICodecAPI

    #pragma comment(lib, "Mfuuid.lib")
    #pragma comment(lib, "Strmiids.lib")
    #pragma comment(lib, "Mfplat.lib")
    #pragma comment(lib, "Bcrypt.lib")
    #pragma comment(lib, "Secur32.lib")

    #pragma comment( lib, "ws2_32.lib")

    clang 编译时遇到错误 

    LINK : error LNK2001: 无法解析的外部符号 mainCRTStartup

    该编译为编译静态库, --cc 不要去定义为clang   默认就好了   具体原因未知

    使用时hw_get_frame_buffer 获得的指针为空:

    ffmpeg版本问题  从4.1.7 升级到 4.4.1 就没有这个问题了

    编译FFmpeg4.4 出现libavfilter/vf_scale_cuda_bicubic.ptx.c(2818): fatal error C1060: compiler is out of heap space

    不要将scale_cuda 编译进去或者  --disable-filters

     

    configure 出现 ERROR: cuvid requested, but not all dependencies are satisfied: ffnvcodec

    ffnvcodec 太低了 用的 8.2 版本

    运行出现驱动崩溃bug   cuGraphicsGLRegisterImage

    388 驱动有bug   需要升级驱动

  • 相关阅读:
    Django动态渲染多层菜单
    python使用pdkdf2加盐密码
    ceil 模块
    python面试总结
    Django 中related_name,"%(app_label)s_%(class)s_related"
    安装zabbix-3.0.3+nginx-1.10.1+php-5.6.22
    Django 权限管理
    python RecursionError: maximum recursion depth exceeded in comparison错误
    django _meta方法
    html 之input标签height设置问题
  • 原文地址:https://www.cnblogs.com/luoyinjie/p/15954204.html
Copyright © 2020-2023  润新知