热门标签 | 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。**


推荐阅读
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 本文详细介绍了 com.apollographql.apollo.api.internal.Optional 类中的 orNull() 方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 目录预备知识导包构建数据集神经网络结构训练测试精度可视化计算模型精度损失可视化输出网络结构信息训练神经网络定义参数载入数据载入神经网络结构、损失及优化训练及测试损失、精度可视化qu ... [详细]
  • 本文详细介绍了如何在Linux系统(以CentOS为例)上彻底卸载Zimbra邮件系统,包括停止服务、删除文件和用户等步骤。 ... [详细]
  • 实验九:使用SharedPreferences存储简单数据
    本实验旨在帮助学生理解和掌握使用SharedPreferences存储和读取简单数据的方法,包括程序参数和用户选项。 ... [详细]
  • 基于Linux开源VOIP系统LinPhone[四]
    ****************************************************************************************** ... [详细]
  • 在Windows系统中安装TensorFlow GPU版的详细指南与常见问题解决
    在Windows系统中安装TensorFlow GPU版是许多深度学习初学者面临的挑战。本文详细介绍了安装过程中的每一个步骤,并针对常见的问题提供了有效的解决方案。通过本文的指导,读者可以顺利地完成安装并避免常见的陷阱。 ... [详细]
  • 在 CentOS 6.7 系统维护中,常用的巡检命令包括:`uname -a` 用于查看内核、操作系统和 CPU 信息;`head -n 1 /etc/issue` 用于查看操作系统的版本;`cat /proc/cpuinfo` 用于获取详细的 CPU 信息;`hostname` 用于显示当前主机名;`ls` 命令则用于列出目录内容。这些命令可以帮助系统管理员快速了解系统的运行状态和配置信息,确保系统的稳定性和安全性。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 在 CentOS 7 系统中安装 Scrapy 时遇到了一些挑战。尽管 Scrapy 在 Ubuntu 上安装简便,但在 CentOS 7 上需要额外的配置和步骤。本文总结了常见问题及其解决方案,帮助用户顺利安装并使用 Scrapy 进行网络爬虫开发。 ... [详细]
  • 在Ubuntu系统中安装Android SDK的详细步骤及解决“Failed to fetch URL https://dlssl.google.com/”错误的方法
    在Ubuntu 11.10 x64系统中安装Android SDK的详细步骤,包括配置环境变量和解决“Failed to fetch URL https://dlssl.google.com/”错误的方法。本文详细介绍了如何在该系统上顺利安装并配置Android SDK,确保开发环境的稳定性和高效性。此外,还提供了解决网络连接问题的实用技巧,帮助用户克服常见的安装障碍。 ... [详细]
  • 深入解析 Android 中 EditText 的 getLayoutParams 方法及其代码应用实例 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 计算机视觉领域介绍 | 自然语言驱动的跨模态行人重识别前沿技术综述(上篇)
    本文介绍了计算机视觉领域的最新进展,特别是自然语言驱动的跨模态行人重识别技术。上篇内容详细探讨了该领域的基础理论、关键技术及当前的研究热点,为读者提供了全面的概述。 ... [详细]
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社区 版权所有