• 2137阅读
  • 4回复

[提问]请教下大佬们qt android怎么编译ffmpeg库 [复制链接]

上一主题 下一主题
离线koniue
 

只看楼主 倒序阅读 楼主  发表于: 2022-08-08
关键词: androidffmpeg
本来是想在windows编译ffmpeg库的,结果按照教程没编出来,然后想转移到ubuntu下,结果库是编成了,但是用的时候报错了,请教下大家这是怎么回事
环境:
Qt5.15.2
jdk1.8.0_341
ndk/21.3.6528147
android_openssl

之前用的是动态库,后来改成了静态库:

INCLUDEPATH += $$PWD/ffmpeg/include
DEPENDPATH += $$PWD/ffmpeg


LIBS += $$PWD/ffmpeg/lib/libavcodec.a
LIBS += $$PWD/ffmpeg/lib/libavdevice.a
LIBS += $$PWD/ffmpeg/lib/libavfilter.a
LIBS += $$PWD/ffmpeg/lib/libavformat.a
LIBS += $$PWD/ffmpeg/lib/libavutil.a
LIBS += $$PWD/ffmpeg/lib/libpostproc.a
LIBS += $$PWD/ffmpeg/lib/libswresample.a
LIBS += $$PWD/ffmpeg/lib/libswscale.a


结果都报错:

:-1: error: linker command failed with exit code 1 (use -v to see invocation)clang++: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Makefile:254: libandroid-test_armeabi-v7a.so] Error 1

:-1: Error while building/deploying project android-test (kit: Android Qt 5.15.2 Clang Multi-Abi)Error while building/deploying project android-test (kit: Android Qt 5.15.2 Clang Multi-Abi)The kit Android Qt 5.15.2 Clang Multi-Abi has configuration issues which might be the root cause for this problem.When executing step "Make"
离线liudianwu

只看该作者 1楼 发表于: 2022-08-09
注意位数
1条评分金钱+10
20091001753 金钱 +10 - 2022-08-10
欢迎关注微信公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发) QQ:517216493  WX:feiyangqingyun  QQ群:751439350
离线koniue

只看该作者 2楼 发表于: 2022-08-10
回 liudianwu 的帖子
liudianwu:注意位数 (2022-08-09 09:22) 

大佬能详细的说下嘛
离线20091001753

只看该作者 3楼 发表于: 2022-08-11
就像在 Win系统里,dll 会有 32位 和 64位 的区别。

同理,安卓系统,.a 文件也有类似的区别,armv7 是 32位,armv8 是 64位。
(づ ̄ 3 ̄)づ
离线koniue

只看该作者 4楼 发表于: 2022-08-11
回 20091001753 的帖子
20091001753:
就像在 Win系统里,dll 会有 32位 和 64位 的区别。
同理,安卓系统,.a 文件也有类似的区别,armv7 是 32位,armv8 是 64位。

#!/bin/bash

export NDK=/home/Android/Sdk/ndk/21.3.6528147 #这里配置先你的 NDK 路径
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64

#arm64-v8a
ARCH=arm64
CPU=armv8-a
API=29
CC=$TOOLCHAIN/bin/clang
CXX=$TOOLCHAIN/bin/clang++
SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot
CROSS_PREFIX=$TOOLCHAIN/bin/
PREFIX=$(pwd)/android/$CPU/$API
OPTIMIZE_CFLAGS="-march=$CPU"


function build_android
{

./configure \
--prefix=$PREFIX \
--enable-neon  \
--enable-hwaccels  \
--enable-gpl   \
--disable-debug \
--enable-small \
--enable-jni \
--enable-mediacodec \
--enable-decoder=h264_mediacodec \
--enable-static \
--enable-shared \
--disable-doc \
--enable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-doc \
--disable-symver \
--cross-prefix=$CROSS_PREFIX \
--target-os=android \
--arch=$ARCH \
--cpu=$CPU \
--cc=$CC \
--cxx=$CXX \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $OPTIMIZE_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS"

make clean
make -j16
make install

echo "============================ build android $CPU->$API success =========================="

}

build_android

这是我的编译脚本  qt编译用的是armv8-a  android build platforms 29
结果还是报错


快速回复
限100 字节
 
上一个 下一个