热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ijkplayer系列(一)——android平台下ijkplayer的使用

写在前面ijkplayer是bilibili的一个开源的视频播放器,本篇文章主要讲解如何用ijkplayer播放CCTV1。ijkplayer也支持本地视频,方法都大同小异,要是大
写在前面

ijkplayer是bilibili的一个开源的视频播放器,本篇文章主要讲解如何用ijkplayer播放CCTV1。ijkplayer也支持本地视频,方法都大同小异,要是大家有这方面需求的话,可以去官网上看看用法。

ijkplayer用法

编译前准备

首先我们得从github上把源代码clone下面,当然由于我们要编译源代码,所以得在linux下面进行,要是读者没有什么特别需求的话,可以直接在网上找一些编译好的so,import到project里面也行。

网上有很多关于怎样编译源码的文章,我这里就简单写一下吧:

首先我们在ubuntu下面得有NDK和SDK环境,我们可以在AndroidDevTool这里下载。

然后添加环境变量,这里我把NDK和SDK全部放到/home/ijkplayer下的,所以环境变量:

export ANDROID_SDK=~/home/ijkplayer/sdk
export ANDROID_NDK=~/home/ijkplayer/android-ndk-r10e
export PATH=$PATH:$ANDROID_SDK:$ANDROID_NDK:$ANDROID_SDK/platform-tools/

编译源码

git clone https://github.com/bbcallen/ijkplayer.git
cd ijkplayer-android
git checkout -B latest k0.5.1
./init-android.sh
cd android/contrib
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
cd ..
./compile-ijk.sh all

上面是从github上面直接复制来的,到这里,编译好了,我们就可以直接复制到项目里面用了。上面编译之所以加上all是因为我们不止编译某一个平台下的so,当然如果你要编译某一个平台的so(如arm64),那么把

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

换成

./compile-ffmpeg.sh arm64
cd ..
./compile-ijk.sh arm64

就行了。

使用

如果你没有什么特殊需求的话,也可以直接添加官方依赖:


compile 'tv.danmaku.ijk.media:ijkplayer-java:0.5.1'
compile 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.5.1'
compile 'tv.danmaku.ijk.media:ijkplayer-armv5:0.5.1'
compile 'tv.danmaku.ijk.media:ijkplayer-arm64:0.5.1'
compile 'tv.danmaku.ijk.media:ijkplayer-x86:0.5.1'
compile 'tv.danmaku.ijk.media:ijkplayer-x86_64:0.5.1'
compile 'tv.danmaku.ijk.media:ijkplayer-exo:0.5.1'

或者你也可以更改部分源码,然后再像上面说的那样编译,最后把各个平台的so加入进来。

不过不管你如何更改,这几个必须是得导入的:

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

下面这几个是不同平台的链接库,根据需要可以适当删除:

compile 'tv.danmaku.ijk.media:ijkplayer-armv5:0.5.1'
compile 'tv.danmaku.ijk.media:ijkplayer-arm64:0.5.1'
compile 'tv.danmaku.ijk.media:ijkplayer-x86:0.5.1'
compile 'tv.danmaku.ijk.media:ijkplayer-x86_64:0.5.1'

下面这个是一个MediaPlayer,因为我们后面可以在settings下设置用不同player来渲染多媒体显示。这就是其中一个吧。

compile 'tv.danmaku.ijk.media:ijkplayer-exo:0.5.1'

然后官方demo目录下的这些文件导入进来:

《ijkplayer系列(一) —— android平台下ijkplayer的使用》

也是要导入我们工程里面的。

最后
我们在activity里面几句代码就可以简单集成CCTV1了:

mSettings = new Settings(this);
videoView = (IjkVideoView) findViewById(R.id.videoview);
// init player
IjkMediaPlayer.loadLibrariesOnce(null);
IjkMediaPlayer.native_profileBegin("libijkplayer.so");
videoView.setVideoURI(Uri.parse("http://106.36.45.36/live.aishang.ctlcdn.com/00000110240001_1/encoder/1/playlist.m3u8"));
videoView.setOnPreparedListener(new IMediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(IMediaPlayer mp) {
videoView.start();
}
});

是不是很简单?

由于本文主要是方便后面的源码分析,所以使用方法写得很简单,其实我们可以配合我们刚刚复制进来的AndroidMediaController来加入控制条什么的。要是大家需要详细点的教程的话,可以给我留言。

** 如果大家还想了解ijkplayer的工作流程的话,可以关注下android下的ijkplayer。**


推荐阅读
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了GregorianCalendar类的基本信息,包括它是Calendar的子类,提供了世界上大多数国家使用的标准日历系统。默认情况下,它对应格里高利日历创立时的日期,但可以通过调用setGregorianChange()方法来更改起始日期。同时,文中还提到了GregorianCalendar类为每个日历字段使用的默认值。 ... [详细]
  • 在win8上安装SQL2000的详细步骤(原创)
    本文详细介绍了在win8操作系统上安装SQL2000的步骤,包括找到安装文件、设置兼容性、输入序列号、选择数据库路径、选择账号模式、输入密码、处理错误提示等。适用于那些想在win8上使用SQL2000的用户。 ... [详细]
  • 本文整理了Java中com.evernote.android.job.JobRequest.getTransientExtras()方法的一些代码示例,展示了 ... [详细]
  • 本文介绍了在Ubuntu 11.10 x64环境下安装Android开发环境的步骤,并提供了解决常见问题的方法。其中包括安装Eclipse的ADT插件、解决缺少GEF插件的问题以及解决无法找到'userdata.img'文件的问题。此外,还提供了相关插件和系统镜像的下载链接。 ... [详细]
  • Mono为何能跨平台
    概念JIT编译(JITcompilation),运行时需要代码时,将Microsoft中间语言(MSIL)转换为机器码的编译。CLR(CommonLa ... [详细]
  • 【具体报错信息】ErrorparsingD:\android-sdks\system-images\android-22\android-wear\armeabi-v7a\devi ... [详细]
  • x86 linux的进程调度,x86体系结构下Linux2.6.26的进程调度和切换
    进程调度相关数据结构task_structtask_struct是进程在内核中对应的数据结构,它标识了进程的状态等各项信息。其中有一项thread_struct结构的 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文详细介绍了在Centos7上部署安装zabbix5.0的步骤和注意事项,包括准备工作、获取所需的yum源、关闭防火墙和SELINUX等。提供了一步一步的操作指南,帮助读者顺利完成安装过程。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有