gpt4 book ai didi

android - 如何为 Android 使用 libx265 编译 FFmpeg?

转载 作者:行者123 更新时间:2023-12-04 23:28:17 25 4
gpt4 key购买 nike

我已经成功地为 Android 编译了带有 libx264(作为静态库)的 FFmpeg。但我也想在 Android 上的 FFmpeg 中使用 libx265(作为静态库)。所以我做了一些尝试:

首先,我修复了 libx265 的 log2 函数和 posix_memalign 函数未发现问题,将它们更改为 log(使用 log 近似 log2)函数和 memalign(替换 posix_memalign 并做一些调整)函数。并通过删除 cmakelist.txt 文件中的“-lpthread”修复了 pthread 链接问题。

然后,我使用 cmake 和 make 成功编译了 libx265(作为静态库)。

我在 FFmpeg 配置时启用了 libx265。但是当配置运行时,它在屏幕上显示“libx265 not found using pkg-config”。

我检查了 config.log,发现了这些错误消息:

/home/user/ffmpeg-2.8.1/android/arm/lib/libx265.a(bitstream.cpp.o):bitstream.cpp:typeinfo for x265::BitInterface: error: undefined reference to 'vtable for __cxxabiv1::__class_type_info'
/home/user/ffmpeg-2.8.1/android/arm/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function
/home/user/ffmpeg-2.8.1/android/arm/lib/libx265.a(bitstream.cpp.o):bitstream.cpp:typeinfo for x265::Bitstream: error: undefined reference to 'vtable for __cxxabiv1::__si_class_type_info'
/home/user/ffmpeg-2.8.1/android/arm/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function
/home/user/ffmpeg-2.8.1/android/arm/lib/libx265.a(encoder.cpp.o):encoder.cpp:typeinfo for x265::SEIDecodedPictureHash: error: undefined reference to 'vtable for __cxxabiv1::__si_class_type_info'
/home/user/ffmpeg-2.8.1/android/arm/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function
/home/user/ffmpeg-2.8.1/android/arm/lib/libx265.a(encoder.cpp.o):encoder.cpp:typeinfo for x265::SEIuserDataUnregistered: error: undefined reference to 'vtable for __cxxabiv1::__si_class_type_info'
/home/user/ffmpeg-2.8.1/android/arm/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function
/home/user/ffmpeg-2.8.1/android/arm/lib/libx265.a(encoder.cpp.o):encoder.cpp:typeinfo for x265::SEIMasteringDisplayColorVolume: error: undefined reference to 'vtable for __cxxabiv1::__si_class_type_info'
/home/user/ffmpeg-2.8.1/android/arm/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function
/home/user/ffmpeg-2.8.1/android/arm/lib/libx265.a(threading.cpp.o):threading.cpp:typeinfo for x265::Thread: error: undefined reference to 'vtable for __cxxabiv1::__class_type_info'
/home/user/ffmpeg-2.8.1/android/arm/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function
/home/user/ffmpeg-2.8.1/android/arm/lib/libx265.a(wavefront.cpp.o):wavefront.cpp:typeinfo for x265::JobProvider: error: undefined reference to 'vtable for __cxxabiv1::__class_type_info'
/home/user/ffmpeg-2.8.1/android/arm/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function
/home/user/ffmpeg-2.8.1/android/arm/lib/libx265.a(slicetype.cpp.o):slicetype.cpp:typeinfo for x265::BondedTaskGroup: error: undefined reference to 'vtable for __cxxabiv1::__class_type_info'
/home/user/ffmpeg-2.8.1/android/arm/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function
/home/user/ffmpeg-2.8.1/android/arm/lib/libx265.a(frameencoder.cpp.o):frameencoder.cpp:function x265::FrameEncoder::encodeSlice(): error: undefined reference to '__dynamic_cast'
/home/user/ffmpeg-2.8.1/android/arm/lib/libx265.a(frameencoder.cpp.o):frameencoder.cpp:function x265::FrameEncoder::encodeSlice(): error: undefined reference to '__dynamic_cast'
/home/user/ffmpeg-2.8.1/android/arm/lib/libx265.a(frameencoder.cpp.o):frameencoder.cpp:function x265::FrameEncoder::processRowEncoder(int, x265::ThreadLocalData&): error: undefined reference to '__dynamic_cast'
/home/user/ffmpeg-2.8.1/android/arm/lib/libx265.a(frameencoder.cpp.o):frameencoder.cpp:function .LTHUNK2: error: undefined reference to '__dynamic_cast'
/home/user/ffmpeg-2.8.1/android/arm/lib/libx265.a(frameencoder.cpp.o):frameencoder.cpp:typeinfo for x265::FrameEncoder: error: undefined reference to 'vtable for __cxxabiv1::__vmi_class_type_info'
/home/user/ffmpeg-2.8.1/android/arm/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function
/home/user/ffmpeg-2.8.1/android/arm/lib/libx265.a(sei.cpp.o):sei.cpp:typeinfo for x265::SEI: error: undefined reference to 'vtable for __cxxabiv1::__vmi_class_type_info'
/home/user/ffmpeg-2.8.1/android/arm/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function

我该怎么做才能解决它?

最佳答案

我找到了解决方案。

我需要手动将「libgnuSTL_static.a」的路径作为参数添加到 gcc/g++。完成后,编译将成功。

关于android - 如何为 Android 使用 libx265 编译 FFmpeg?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33459208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com