概述

Eclipse 集成ijkplayer demo,播放本地视频、和rtmp流。

详细

代码下载:http://www.demodashi.com/demo/10630.html

一、准备工作

开发环境

jdk1.8

Eclipse Luna Service Release 1 (4.4.1)

运行环境:

华为荣耀6(Android4.4)、华为p9(Android7.0)

准备so:

需要编译好ijkplayer so,具体如何编译可以参考这篇blog,ijkplayer编译.so

实现功能:

Eclipse集成ijkplayer demo,可以播放本地视频、rtmp流等。

二、程序实现

截图程序结构,主要是ijkplayer-example和ijkplayer-example-modify(加强版),其他的都是一些jar包。

接着上一篇在Mac上编译ijkplayer的.so,现在将这些文件夹拷贝到windows上。(在mac和winds上集成到eclipse上是一样的,只是我这mac上没有安装eclipse)。

现在开始说集成到Eclipse的步骤:

1 更改目录结构

  1. 以ijkplayer-armv7a文件夹为例,删除选中的这四个文件。

  2. 将ijkplayer-armv7a\src\main目录下的所有文件拷贝到ijkplayer-armv7a目录下。

  3. 删除src文件夹。

  4. 将java文件夹名更改为src。

其他工程也是这样操作。

2 导入各工程到eclipse中。

这里没有导入ijkplayer-exo该工程,这个是google的一个开源播放器,我这里不用所以就没有导入,如果需要用的话还需要编译ijkplayer-exo。

导入工程发现几个问题如下图所示:

这问题是因为找不到‘Java’文件夹,之前将该文件夹改为src了,所有找不到很正常。

打开各个工程下的.classpath文件,删除<classpathentry kind="src" path="java"/>这一行。

然后在eclipse下刷新(refresh)下各工程就可以了。

<?xml version="1.0" encoding="UTF-8"?>
<classpath>  <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>  <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>  <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>  <classpathentry kind="src" path="java"/>  <classpathentry kind="src" path="src"/>  <classpathentry kind="src" path="gen"/>  <classpathentry kind="output" path="bin/classes"/>
</classpath>

3 编译各个工程

(1)首先编译ijkplayer-arm64、ijkplayer-armv5、ijkplayer-armv7a、ijkplayer-x86、ijkplayer-x86_64这五个工程,这五个工程类似.

以arm64为例,右击工程,点击Properties,选择Android,勾选Is Library点击ok. 编译下工程(Build Project),确保没有问题。

(2)编译ijkplayer-java。

出现如下图问题:

AndroidMediaPlayer类中导入的MediaDataSource类找不到,已经导入包名了,importandroid.media.MediaDataSource;

发现这个类是在Android 6.0(API 23)才有的一个类,将project.properties中target修改为android-23(之前我这里是22)。

重新build project,发现没有问题了。

4 编译ijkplayer-example工程

1 右击ijkplayer-example,点击Properties,选择Andorid,将这几个全部删除。

添加下图几个

2 配置preference

需要导入preference包,和导入appcompat包类似。
否则会提示该错误Error: No resource found that matches the given name: attr 'preferenceTheme'。并且该preference需要做如下配置,否则运行是setting界面打开失败。

3 配置otto

下载otto jar包,在ijkplayer-example目录下新建libs文件夹,将jar包拷贝到libs目录下。右击jar包,点击Build path,点击Add to build path。

4 修改IjkVideoView类,注释掉exoplayer相关代码。

import tv.danmaku.ijk.media.exo.IjkExoMediaPlayer;  IjkExoMediaPlayer IjkExoMediaPlayer = new IjkExoMediaPlayer(mAppContext);
mediaPlayer = IjkExoMediaPlayer;

三、运行效果

界面效果图如下所示:

该demo可以播放本地视频文件,以及网络流媒体。当然记得别选择用IjkExoMediaPlayer(没有配exo)。

修改后的demo:

主页面可以填写流的地址进行播放,或者选择本地视频播放。

代码如下:

package tv.danmaku.ijk.media.example.activities;import tv.danmaku.ijk.media.example.R;
import tv.danmaku.ijk.media.example.application.AppActivity;
import tv.danmaku.ijk.media.example.application.Settings;
import android.app.ActionBar.LayoutParams;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.LinearLayout;public class MainActivity extends AppActivity {private final String TAG = "MainActivity";private LinearLayout mLinearLayout;private EditText mUrlEditText;private Button mStartButton;private Button mFileExplorerButton;private View mDividerView;private Settings mSettings;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);FrameLayout body = (FrameLayout) findViewById(R.id.body);mLinearLayout = new LinearLayout(this);mLinearLayout.setOrientation(LinearLayout.VERTICAL);mUrlEditText = new EditText(this);
        mUrlEditText.setText("rtmp://live.hkstv.hk.lxdns.com/live/hks");mLinearLayout.addView(mUrlEditText, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);mStartButton = new Button(this);mStartButton.setText("Start");mLinearLayout.addView(mStartButton, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);mFileExplorerButton = new Button(this);mFileExplorerButton.setText("File Explorer");mLinearLayout.addView(mFileExplorerButton, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);body.addView(mLinearLayout, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);mStartButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {onStartPlay();}});mFileExplorerButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {onFileExplorer();}});}private void onStartPlay() {String url = mUrlEditText.getText().toString().trim();if (url.isEmpty()) {Log.e(TAG, "url is emtpy");return;}VideoActivity.intentTo(this, url, "demo url");}private void onFileExplorer() {Intent intent = new Intent(this, FileExplorerActivity.class);startActivity(intent);}
}

填写url,进行播放,如果有问题记得点击setting,修改播放器或其他配置。

四、其他补充

参考文章:

Eclipse 集成ijkplayer demo: http://blog.csdn.net/VNanyesheshou/article/details/53836199

ijkplayer 编译so: http://blog.csdn.net/VNanyesheshou/article/details/53814951

注:本文著作权归作者,由demo大师(http://www.demodashi.com)宣传,拒绝转载,转载需要作者授权

Eclipse集成ijkplayer并实现本地和网络视频播放等相关推荐

  1. AVPlayer 本地、网络视频播放相关

    AVPlayer 本地.网络视频播放相关 作者 阿聪o 关注 2016.06.21 09:42 字数 1582 阅读 2445评论 6喜欢 42 iOS开发常用的两种视频播放方式,一种是使用MPMov ...

  2. ubuntu下部署eclipse集成hadoop\android\web\GCC开发环境小记

    Hadoop环境: 1.部署:    1)ubuntu上创建新用户账号:hadoop/123,并设置为管理员:    2)ubuntu上安装SSH:创建rsa无密码ssh-key:    3)ubun ...

  3. Day 28: OpenShift的Eclipse集成

    今天的<30天学习30种新技术> 我決定介绍OpenShift的Eclipse集成.应用将运行在OpenShift上,我们将使用OpenSHift的Eclipse插件来开发和部署一个应用. ...

  4. maven2 + tomcat6 + eclipse集成配置

    转载:http://wenku.baidu.com/view/d64147c676eeaeaad1f330d4.html?re=view /* maven2 + tomcat6 + eclipse集成 ...

  5. IBM Cloud VPC网络与本地办公网络的互通

    VPN 连接(VPN Connections)是一种基于网络隧道技术,实现本地数据中心与公有云上资源连通的传输服务,它能帮您在 Internet 上快速构建一条安全.可靠的加密通道.VPN 连接具有配 ...

  6. 笔记本显示网络电缆被拔出怎么解决_本地连接网络电缆被拔出 本地连接网络电缆被拔出解决方法【图文】...

    网络可以说是我们日常生活中必不可少的一部分了,因此网络的使用,我们能够实现很多无论是工作方面还是在学习上,亦或是日常生活中的便利.但是有很多用户反映,自己在日常使用网络的过程中总是会显示"本 ...

  7. eclipse集成git回退到某个版本

    eclipse集成git版本回退,步骤如下: By the way,昨天旁边小哥哥合并主干提交了代码,发现影响别人马上要上线,无奈必须回退代码.eclipse集成git网上很多博客都不太好使,于是决定 ...

  8. androidstudio集成ijkplayer教程

    介绍 ijkplayer是一款非常火的开源视频播放器,android和IOS通用.关于怎么编译怎么导入android Studio中自己的项目,其中坑很多,本篇记录下自己的操作记录.ijkplayer ...

  9. Windows8.1+Eclipse搭建Hadoop2.7.2本地模式开发环境

    下面介绍如何在Windows8.1上搭建hadoop2.7.2的本地模式开发环境,为后期做mapreduce的开发做准备. 在搭建开发环境之前,首先选择开发工具,就是大家都很熟悉的Eclipse(本人 ...

最新文章

  1. smartcrop.js智能图片裁剪库
  2. 【Qt】QImage使用总结
  3. 2.javascript之缓存 localStorage 和sessionStorage之间的区别
  4. R语言case_when函数和cases函数实战
  5. 分享丨强化学习是针对优化数据的监督学习?
  6. 虚拟电脑键盘app_说到弹吉他,这几个APP你一定用得上
  7. python代码需要背吗-python程序需要编译吗
  8. ubuntu安装hive2.3.7
  9. Bootstrap 媒体列表
  10. GitHub 被爆开始实名制,以便于执行美国贸易制裁
  11. 1085 Perfect Sequence (25 分)
  12. plc控制伺服电机 四轴攻丝机案例 该程序为plc控制伺服电机的工程案例程序,包含伺服电机接线图,包含程序流程的详细解释说明
  13. 百度网盘客户端使用的一些小窍门
  14. 2021 Summary
  15. JAVA猎才学员成长心得分享
  16. 调用百度大脑AI开放平台接口实现java+web的图像识别技术
  17. 《中国合伙人》:致我们即将逝去的青春
  18. python常用基础库:标准库和第三方库
  19. 云计算系统管理、 云计算应用管理、系统服务管理进阶
  20. 监督学习——支持向量机(Support Vector Machine--SVM)

热门文章

  1. mysql set语句_从强网杯随便注浅析mysql存储过程
  2. 1002.ubuntu系统级BUG-/dev/ttyUSB0
  3. 【Python】单引号、双引号、三引号和字符串
  4. STM32学习——EXTI外部中断
  5. ROS 教程之 vision : 用各种摄像头获取图像
  6. vc可以实现对话框里显示html文档内容,也可以显示word内容吗,VC6中使用CHtmlView在对话框控制中显示HTML文档...
  7. 计算机网络--从五层模型开始(完善中)
  8. 《深入理解分布式事务》第六章 最终一致性分布式事务解决方案
  9. Java之LockSupport详解
  10. Hibernate-面试题