ijkplayer音视频开发经验之路视频音频

ijkplayer支持https

2016-12-21  本文已影响509人  南风无影

首先,了解什么是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的资源:


openssl.png

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你会发现多了几个文件夹

ssl.png
先执行:./compile-openssl.sh armv7a
后面的和原来一样,执行:
 ./compile-ffmpeg.sh  armv7a
./compile-ijk.sh armv7a

note: ffmpeg3.1之前的版本,可能要改下time.c
我用ffmpeg2.8的版本,就有个兼容的问题,有的手机会崩

修改方法链接

上一篇 下一篇

猜你喜欢

热点阅读