我正在我的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?

最佳答案

嗨,彼得罗,我不是专业人士,但希望这个教程会有帮助。
你必须用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 and all命令(该命令将为所有处理器编译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作为liblary。
$ cd ..
$ ./compile-ijk.sh all

在所有这些步骤之后,这些文件夹中应该有liblaries(三个*.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工作室并运行ijk示例进行测试。

09-15 15:59