记录一次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 \

执行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

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

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

编写调用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

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

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

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

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

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

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

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

然后编译

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

然后就可以正常执行了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值