首先,了解什么是https, 和http有何不同。
HTTPS是什么意思?HTTP与HTTPS的区别
如何在播放器中支持https呢,其实就是ffmpeg的configure支持。
ffmpeg关于https的相关配置
有4处相关的
--enable-gnutls enable gnutls, needed for https support if openssl is not used [no]
--enable-openssl enable openssl, needed for https support if gnutls is not used [no]
https_protocol_select="tls_protocol"
rtmpts_protocol_select="ffrtmphttp_protocol https_protocol"
这里面最重要的是 --enable-openssl这个参数
可以先把这个使能一下
How to compile ffmpeg with https support
于是我在ijkplayer的config文件夹的module.sh里面,增加一条
# gongjia add
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-openssl"
结果是提示:
ERROR: openssl not found
如果换成--enable-gnutls
ERROR: gnutls not found using pkg-config
所以,要先知道怎样能把openssl编译通过
国外的网站就是资源多,搜到一个
ERROR: openssl not found during FFmpeg ./configure
要加入openssl的资源:
ijkplayer提供了openssl的支持。运行./init-android-openssl.sh
贴出来
#IJK_OPENSSL_UPSTREAM=https://github.com/openssl/openssl
IJK_OPENSSL_UPSTREAM=https://github.com/Bilibili/openssl.git
IJK_OPENSSL_FORK=https://github.com/Bilibili/openssl.git
IJK_OPENSSL_COMMIT=OpenSSL_1_0_2h
IJK_OPENSSL_LOCAL_REPO=extra/openssl
set -e
TOOLS=tools
echo "== pull openssl base =="
sh $TOOLS/pull-repo-base.sh $IJK_OPENSSL_UPSTREAM $IJK_OPENSSL_LOCAL_REPO
function pull_fork()
{
echo "== pull openssl fork $1 =="
sh $TOOLS/pull-repo-ref.sh $IJK_OPENSSL_FORK android/contrib/openssl-$1 ${IJK_OPENSSL_LOCAL_REPO}
cd android/contrib/openssl-$1
git checkout ${IJK_OPENSSL_COMMIT} -B ijkplayer
cd -
}
pull_fork "armv5"
pull_fork "armv7a"
pull_fork "arm64"
pull_fork "x86"
pull_fork "x86_64"
运行是OK的,就是网速贼慢,哎,中国的互联网!
下载完,进到android\contrib你会发现多了几个文件夹
先执行:./compile-openssl.sh armv7a
后面的和原来一样,执行:
./compile-ffmpeg.sh armv7a
./compile-ijk.sh armv7a
note: ffmpeg3.1之前的版本,可能要改下time.c
我用ffmpeg2.8的版本,就有个兼容的问题,有的手机会崩