博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Eclipse集成ijkplayer并实现本地和网络视频播放等
阅读量:6714 次
发布时间:2019-06-25

本文共 4763 字,大约阅读时间需要 15 分钟。

概述

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

详细

代码下载:

原文地址:

一、准备工作

开发环境

jdk1.8 

Eclipse Luna Service Release 1 (4.4.1)

运行环境:

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

准备so:

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

实现功能:

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

二、程序实现

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

图片.png

接着上一篇在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。

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

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

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

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

3 编译各个工程

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

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

(2)编译ijkplayer-java。

出现如下图问题:

AndroidMediaPlayer类中导入的MediaDataSource类找不到,已经导入包名了,import.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:

ijkplayer 编译so:

 

 

代码下载:

注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

你可能感兴趣的文章
Order By操作
查看>>
东北证券——“智能报表系统”的建设经验
查看>>
十分钟理解Gradle
查看>>
Mysql复习大全(转)
查看>>
回到上次目录、历史命令查找快捷方式及执行时间显示设置、查看系统版本
查看>>
略论软件模块的加载策略
查看>>
siege 输出结果 理解
查看>>
C语言学习趣事_20_Assert_Setjmp
查看>>
Cogs 1672. [SPOJ375 QTREE]难存的情缘 LCT,树链剖分,填坑计划
查看>>
同一个工程下使用多个.C文件的设计(模块化设计)
查看>>
java贪吃蛇
查看>>
history
查看>>
LeetCode-4Sum
查看>>
GraphicsMagick安装&make命令使用
查看>>
用MeanJS和Yeoman生成器生成【翻译】
查看>>
加个图
查看>>
docker之container
查看>>
入园第一天
查看>>
使用BackgroundWorker解决窗口卡死
查看>>
Thinkpad 笔记本 装win7 64 位操作系统热键驱动装不上问题解决!
查看>>