gpt4 book ai didi

android - 使用 librtmp 为 android 构建 FFMPEG

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:04:02 25 4
gpt4 key购买 nike

我正在尝试使用 NDK r7b 构建 FFMPEG 的一体式静态二进制文件,并且一切正常,直到我尝试使用 RTMP 支持构建它。

我使用来自 https://github.com/guardianproject/android-ffmpeg 的资源使用 librtmp2.4 和这样的自定义配置

.configure \
--target-os=linux \
--cross-prefix=arm-linux-androideabi- \
--arch=arm \
--sysroot=/home/andrey/android-ndk-r7b/platforms/android-3/arch-arm \
--enable-static \
--disable-shared \
--disable-symver \
--enable-small \
--disable-devices \
--disable-avdevice \
--enable-gpl \
--enable-librtmp \
--prefix=../build/ffmpeg/armeabi \
--extra-cflags=-I../rtmpdump/librtmp \
--extra-ldflags=-L../rtmpdump/librtmp \

rtmpdump 目录与ffmpeg 处于同一层级。据我了解,我的配置中的最后两个字符串表示编译器可以在哪里找到 librtmp 的来源。但我得到的只是 ERROR: librtmp not found

我没有使用 NDK 的经验,很明显我遗漏了一些重要的部分,但我自己找不到。

最佳答案

这很有挑战性,但我想我有一个解决方案。配置时的问题是 FFmpeg 想要通过 pkg-config 管理系统检测正确的 librtmp 安装。

我假设您已经在 ../rtmpdump 引用的目录中成功交叉编译了 librtmp。编辑 FFmpeg 配置脚本并搜索以下行:

enabled librtmp    && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket

注释掉(在该行的前面放一个“#”)。现在,重新运行配置,仅进行以下修改:

--extra-cflags="-I/full/path/to/rtmpdump"

在这里有一个绝对路径可能会有所帮助。此外,在末尾省略/librtmp/,因为 #include 指令已经在头文件前添加了 librtmp/。下一页:

--extra-ldflags="-L/full/path/to/rtmpdump -lrtmp"

同样,绝对路径,并指定要链接的库,因为我们通过配置注释掉了该逻辑。

现在,configure 应该会成功,交叉编译也应该会很顺利。最终的 ffmpeg 二进制文件应该报告协议(protocol)下的 RTMP 模块系列:

ffmpeg -protocols
[...]
rtmp
rtmpe
rtmps
rtmpt
rtmpte

请注意,我没有 NDK 开发环境来测试它。但是我通过编译 librtmp(没有通过 pkg-config 安装包)然后执行上述步骤在我的桌面 Ubuntu 系统上进行了测试。

关于android - 使用 librtmp 为 android 构建 FFMPEG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9634496/

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