概述

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

详细

原文地址:Eclipse 集成ijkplayer demo
http://blog.csdn.net/VNanyesheshou/article/details/53814951

一、准备工作

开发环境

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; @Override
protected 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() {
@Override
public void onClick(View v) {
onStartPlay();
}
}); mFileExplorerButton.setOnClickListener(new View.OnClickListener() {
@Override
public 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大师发表,拒绝转载,转载需要作者授权

Eclipse集成ijkplayer并实现本地和网络视频播放等的更多相关文章

  1. eclipse集成ijkplayer项目

    1.ijkplayer是什么 ijkplayer是b站开源的一个视频插件,基于ffmpeg, 支持 Android 和 iOS,可以代替android自带的videview,有不错的体验,支持的视频文 ...

  2. git与eclipse集成之clone远程仓库到本地

    1. Git与Eclipse集成 1.1. Clone远程仓库到本地 1.1.1.        获取远程仓库地址(选择北京,访问速度比深圳快) 1.1.2.        将远程仓库导入到Eclip ...

  3. maven之一:maven安装和eclipse集成

    maven作为一个项目构建工具,在开发的过程中很受欢迎,可以帮助管理项目中的bao依赖问题,另外它的很多功能都极大的减少了开发的难度,下面来介绍maven的安装及与eclipse的集成. maven的 ...

  4. maven安装和eclipse集成

    maven作为一个项目构建工具,在开发的过程中很受欢迎,可以帮助管理项目中的bao依赖问题,另外它的很多功能都极大的减少了开发的难度,下面来介绍maven的安装及与eclipse的集成. maven的 ...

  5. marven与Eclipse集成配置

    maven作为一个项目构建工具,在开发的过程中很受欢迎,可以帮助管理项目中的bao依赖问题,另外它的很多功能都极大的减少了开发的难度,下面来介绍maven的安装及与eclipse的集成. maven的 ...

  6. maven2 + tomcat6 + eclipse集成配置

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

  7. eclipse集成testng插件

    一.TestNG简介 TestNG是一个开源自动化测试框架,它受到JUnit和NUnit的启发,而引入了许多新的创新功能,如依赖测试,分组概念,使测试更强大,更容易做到. 它旨在涵盖所有类别的测试:单 ...

  8. Eclipse集成Gradle 【Eclipse在线安装Gradle插件方法】

    本章将介绍了Eclipse集成Gradle.以下是将Gradle插件添加到Eclipse的步骤. 步骤1 - 打开Eclipse Marketplace 打开在系统中安装好的Eclipse. 转到 J ...

  9. 【EJB学习笔记】——EJB开发环境搭建(Eclipse集成JBoss)

    之前一直用的EJB开发环境是他们搭建好的,直接拿来用,不过还是感觉老吃别人嚼好的不太好吃,所以自己动手来玩一玩. EJB开发依赖的最基本的环境:JDK.Eclipse.JBoss,这里简单介绍一下最基 ...

随机推荐

  1. C#Arcengine通过坐标点生成面(环形)

    来自:http://www.cnblogs.com/lee24789229/p/5481978.html 通过传入坐标点,返回几何图形,此代码部分可以生成环形面. 方法一 private IGeome ...

  2. 【docker】centOS7上部署的mysql和spring boot服务,要求,mysql的时间、java程序服务的时间和宿主机的时间完全保持一致【修改mysql时区,临时和永久】【修改spring boot配置文件时区】【修改docker启动spring boot实例程序时区】

    要求:centOS7上部署的mysql和spring boot服务,要求,mysql的时间.java程序服务的时间和宿主机的时间完全保持一致: ============================ ...

  3. 高性能 Socket 组件 HP-Socket v3.2.1 正式公布

    HP-Socket 是一套通用的高性能 TCP/UDP Socket 组件,包括服务端组件.client组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C+ ...

  4. UITableView分页

    UITableView分页上拉加载简单,ARC环境,源码如下,以作备份: 原理是,点击最后一个cell,触发一个事件来处理数据,然后reloadData RootViewController.m + ...

  5. tomcat配置301重定向

    tomcat默认情况下不带www的域名是不会跳转到带www的域名的,而且也无法像apache那样通过配置.htaccess来实现.如果想要把不带“www'的域名重定向到带”www"域名下,又 ...

  6. Java Net版短网址(ShortUrl)的算法及实现 待续

    算法 1)将长网址md5生成32位签名串,分为4段, 每段8个字节; 2)对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操作, 即超过30位的忽略处理; 3) ...

  7. 《Windows核心编程》第3章——handle复制相关实验

    先写一个程序,用来查看进程的内核对象,这样我们就能比较子进程是否继承了父进程的某个句柄: #include <windows.h> #include <stdio.h> #de ...

  8. [Mongo] 解决mongoose不支持条件操作符 $gt$gte:$lte$ne $in $all $not

    reference : http://blog.sina.com.cn/s/blog_4df23d840100u25x.html 找到mongoose的安装目录 /usr/local/lib/node ...

  9. 跨库查询(OpenDataSource)与链接服务器(Linking Server)

    一:跨库查询 Openrowset/opendatasource() is an ad-hoc method to access remote server's data. So, if you on ...

  10. 论文神器Latex30分钟快速入门教程-只需9步向学神看齐

    小E说:工欲善其事,必先利其器.立志做个安静的美学霸的你,学会Latex,一定能使你的论文写作事半功倍. 1.LaTeX软件的安装和使用 方法A(自助):在MikTeX的官网下载免费的MikTeX编译 ...