Window下Cygwin编译Android ijkplayer

1.安装Cygwin

按照https://blog.csdn.net/w1072654398/article/details/87369472安装,一步不差,里面就包含了必须的git,make,gcc,ysam,如果在Choess Download Site选择没有地址,可以自己添加阿里的http://mirrors.aliyun.com/cygwin/


2.下载sdk和ndk

Android的sdk,这个都有,NDK按照要求是要r10e的,按照系统下载:
ndk_r10e(Jan 2015)

Windows32-bit : http://dl.google.com/android/ndk/android-ndk-r10e-windows-x86.exe

Windows64-bit : http://dl.google.com/android/ndk/android-ndk-r10e-windows-x86_64.exe


3.修改配置

3.1

打开C:\cygwin64\home\ws\~/.bash_profile 或 ~/.profile文件,在最后添加

export ANDROID_SDK=F:/work/ASSDK/sdk

export ANDROID_NDK=F:/work/ASSDK/android-ndk-r10e

按照自己的sdk和ndk地址,注意斜杠

3.2

删除C:\cygwin64\home\ws\ijkplayer\android\ijkplayer\player-armv7a\src\main\jni下的ijkmedia和android-ndk-prof文件,没有就不用

修改C:\cygwin64\home\ws\ijkplayer\android\compile-ijk.sh文件,找到do_sub_cmd ()方法,注释掉代码


4.打开桌面Cygwin快捷方式,下载ijk,依次输入

#目前b站更新在两年前的0.8.8就不再更新了

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

cd ijkplayer

git checkout -B latest k0.8.8


5.下载ffmpeg

#回到ijkplayer目录,开始下载ffmpeg源码,300多M看网速

cd ..

./init-android.sh


6.下载完成,如果之后要重新编译或者关闭了Cygwin重开,都不用再下载了从这里开始

cd config

rm module.sh

#可以根据自己需求更改,ln -s module-lite.sh module.sh或者ln -s module-lite-hevc.sh module.sh,这是目录里面给我们提供的,hevc就是H265解码

ln -s module-default.sh module.sh


7.编译ffmpeg

#进入contrib目录先清空一下ffmpeg配置

cd ..

cd android/contrib

./compile-ffmpeg.sh clean

#这里如果要全量就./compile-ffmpeg.sh all,否则就选想要的,这里会很慢,刚开始会停留以为卡死,不用管,然后编译过程中会输出各种错误不用管,等它编译完成,一般最终都会成功大概10多分钟

./compile-ffmpeg.sh armv7a


8.编译ijk

#回到android目录,同理这里用armv7a,全量all

cd ..

./compile-ijk.sh armv7a


9.完成,直接把ijkplayer/android/ijkplayer文件夹导入AS工程,编译问题

默认的gradle版本太低,换成你目前的,会报错

9.1

Error:A problem occurred configuring project ':ijkplayer-example'.

 All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html

在网上查了查,只要在ijkplayer-example的build.gradle的defaultConfig内添加

#800800是根据project的build.gradle中的ext.verionCode值来定的,保持一致

flavorDimensions "800800"

9.2

Error:error: '@@array/pref_entries_player' is incompatible with attribute android:entries (attr) reference

打开相应文件,去掉一个@,写错了

9.3

要支持硬解码功能,参数设置要改ijkplayer-example\src\main\java\tv\danmaku\ijk\media\example\widget\media\IjkVideoView.java

在方法public IMediaPlayercreatePlayer(int playerType)中的defalut逻辑中:

// 原本逻辑

// ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec", 1);

// 修改逻辑,需要改成mediacodec-hevc这个参数才可以设置硬解码,注意不是下划线,网上很多写配置mediacodec_all_videos或者mediacodec_hevc都是下划线都是错误的

// 参考解答 https://github.com/bilibili/ijkplayer/issues/855 https://github.com/bilibili/ijkplayer/issues/922

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec-hevc", 1);


10.是否支持265硬编解码

// 是否支持265硬解码

public static boolean isH265DecoderSupport() {

    int count = MediaCodecList.getCodecCount();

        for (int i =0; i < count; i++) {

            MediaCodecInfo info = MediaCodecList.getCodecInfoAt(i);

            if (info.isEncoder()) {

                continue;

            }

            String name = info.getName().toLowerCase();

            if (name.contains("decoder") && name.contains("hevc")) {

               return true;

           }

    }

    return false;

}

// 是否支持265硬编码

public static boolean isH265EncoderSupport() {

        int count = MediaCodecList.getCodecCount();

        for (int i =0; i < count; i++) {

            MediaCodecInfo info = MediaCodecList.getCodecInfoAt(i);

            if (!info.isEncoder()) {

                continue;

            }

            String name = info.getName().toLowerCase();

            if (name.contains("encoder") && name.contains("hevc")) {

                return true;

            }

        }

    return false;

}


11.参考

ijkplayer地址

https://blog.csdn.net/w1072654398/article/details/87369472

https://blog.csdn.net/u010072711/article/details/51354834

https://blog.csdn.net/ytzys/article/details/47302123

https://blog.csdn.net/u010302327/article/details/79168721

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335