4

我在我编译的 android 应用程序中使用 ijkplayer

compile 'tv.danmaku.ijk.media:ijkplayer-java:0.4.5'
compile 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.4.5'

它可以完美地加载 http url,但是如果我尝试加载 https url,我会收到此错误

https protocol not found, recompile FFmpeg with openssl, gnutls, or securetransport enabled.

并且无法加载我的视频。我不知道它是否有任何区别,但我尝试加载的 url 是 .m3u8 但如果它是 http 则可以正常工作。

如何在这个库中重新编译 ffmpeg?

4

2 回答 2

7

嗨,Petro,我不是专业人士,但希望本教程对您有所帮助。

您必须编译带有 openssl 支持的 ijkplayer 才能打开 https 链接,请按照以下步骤操作:

从 github 获取最新版本的 IjkPlayer:

$ git clone https://github.com/Bilibili/ijkplayer.git

打开刚刚下载的文件夹 ijkplayer 删除 module.sh 的符号链接并创建 module-lite.sh 的符号链接

$ cd config
$ rm module.sh
$ ln -s module-lite.sh module.sh

进行 OpenSSL 的初始化(准备下载并首先编译 openssl)

$ cd ..
$ ./init-android-openssl.sh

确保您已指出您的 SDK 和 NDK 路径。

(首选 NDK r10e - 我不确定是否需要 SDK,但以防万一我确实导出了它)

注意:确保您已正确更改路径,这只是我使用的路径示例。

export ANDROID_SDK="/home/ZiomusGorliczanin/SDK"
export ANDROID_NDK="/home/ZiomusGorliczanin/NDK"

打开 IjkPlayer/android/contrib 文件夹并启动 compile-openssl.sh clean 和所有命令(将为所有处理器编译 openssl)。

$ cd android/contrib
$ ./compile-openssl.sh clean
$ ./compile-openssl.sh all

编译可能需要 10 分钟。

使用 OPENSSL 为所有处理器编译 FFMpeg:

$ cd android/contrib
$ ./compile-ffmpeg.sh clean
$ ./compile-ffmpeg.sh all

最后将 IjkPlayer 编译为库。

$ cd ..
$ ./compile-ijk.sh all

在所有这些步骤之后,您应该在这些文件夹中有库(三个 *.so 文件):

ijkplayer/ijkplayer-armv5/src/main/libs
ijkplayer/ijkplayer-armv7a/src/main/libs
ijkplayer/ijkplayer-arm64/src/main/libs
ijkplayer/ijkplayer-x86/src/main/libs

尝试将 gradle 项目导入您的 Android Studio 并运行 Ijk-Example 进行测试。

于 2016-11-18T13:33:00.357 回答
0

如果您收到此错误

./compile-ijk.sh 分析器构建:否

这是因为苹果在 MacBook 中的安全策略,所以有一个替代解决方案可以解决这个问题,Apple menu-->System Preferences-->Security & Policy不管怎样,它会在那里提示。

于 2021-12-03T07:09:36.570 回答