• 记录一次ffmpeg编译


    记录一次ffmpeg编译

    网上搜的linux编译都是xxxx,懒得说了

    不知道为什么ffmpeg-4.2.2下我使用最大量编译都无法编译出include、lib等文件夹

    configurion的封装脚本:

    #!/bin/bash
    
    if [ ! -d build ];then
        mkdir build
    fi
    ./configure \
        --prefix=build \
        --enable-shared \
        --disable-asm \
        --disable-doc \
        --disable-network \
        --disable-ffprobe \
        --disable-ffplay \
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    执行configurion+make后的发现ffmpeg报错找不到so

    ~/ffmpeg-4.2.2 $ ./ffmpeg
    ./ffmpeg: error while loading shared libraries: libavdevice.so.58: cannot open shared object file: No such file or directory
    
    • 1
    • 2

    先不管它,遇到问题一个个解决,找到了根源就好办了

    ffmpeg-4.2.2目录下用find . -name "*.so"找了一下发现对于的so都在对应的模块里面

    ~/ffmpeg-4.2.2 $ find . -name "*.so"
    ./libavdevice/libavdevice.so
    ./libswscale/libswscale.so
    ./libavformat/libavformat.so
    ./libswresample/libswresample.so
    ./libavfilter/libavfilter.so
    ./libavutil/libavutil.so
    ./libavcodec/libavcodec.so
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    编写调用ffmpeg库api的源文件:

    https://github.com/lokenetwork/FFmpeg-Principle/blob/main/input/main.c

    手动指定路径编译

    gcc main.c -w -I ffmpeg-4.2.2 -L./ffmpeg-4.2.2/libavformat  -lavformat -L./ffmpeg-4.2.2/libavutil -lavutil
    
    • 1

    (编译是可以编译的,但是还不能运行)

    ~ $ ./a.out
    ./a.out: error while loading shared libraries: libavformat.so.58: cannot open shared object file: No such file or directory
    
    • 1
    • 2

    然后手动添加动态库路径到变量中

    ~ $ export LD_LIBRARY_PATH=~/ffmpeg-4.2.2/libavformat:~/ffmpeg-4.2.2/libavcodec:~/ffmpeg-4.2.2/libavutil:~/ffmpeg-4.2.2/libswresample
    
    • 1

    ok,可以运行了。经过前面的分析最终的暂时提出下面解答方法

    我暂时的解决方法是将全部so文件手动转移到一个目录下来(注意改路径)

    cd ffmpeg-4.2.2
    mkdir lib
    cp $(find . -name "*.so*") ./lib/
    export LD_LIBRARY_PATH=~/ffmpeg-4.2.2/lib
    
    • 1
    • 2
    • 3
    • 4

    然后编译

    gcc main.c -w -I ffmpeg-4.2.2 -L./ffmpeg-4.2.2/lib  -lavformat -lavutil
    
    • 1

    然后就可以正常执行了

  • 相关阅读:
    网安入门17-XSS(打Cookie)
    Android SdkManager简介
    Vue条件渲染与列表渲染
    MySQL需要了解的常用命令
    遗传算法!
    MySQL学习笔记16
    探索“科技助实”,上海交通大学、蚂蚁集团等发起第三届ATEC科技精英赛
    学习自动化测试该怎么学?
    vsimk is exiting with code 211
    【TypeScript】深入学习TypeScript对象类型
  • 原文地址:https://blog.csdn.net/csdn546229768/article/details/127812327