最近项目中要用于手机播放直播流,RTMP协议的视频。刚开始一顿蒙圈,这个和直播有什么区别。(以为需要用到大厂商的直播框架...)然后在网上找了好多视频播放框架。一开始集成的Android Vitamio。这个怎么说,确实很坑,确实能实现播放视频的功能,但是需要build的版本太低,无法兼容别的功能(eg:权限的管理,build版本必须在23一下,这个就很坑了)。果断的放弃了。再烂别的,中间也找了很多,最后用到的是:基于ijkplayer项目进行的播放器,jjdxm_ijkplayer。
项目地址:jjdxm_ijkplayer
简介:基于 ijkplayer 简单的 UI 界面 当前项目是基于 ijkplayer 项目进行的播放器界面 UI 封装。 是一个适用于 Android 的 RTMP 直播推流 SDK,可高度定制化和二次开发。特色是同时支持 H.264 软编/硬编和 AAC 软编/硬编。主要是支持 RIMP、HLS、MP4、M4A 等视频格式的播放。
关于jjdxm_ijkplayer就说这么多了。项目地址已经贴上了,大家可以在GitHub上自习的查看。
接下来就来说说我的集成步骤,并贴上相关的主意事项与代码:
先看下效果:(由于是直播湖南卫视的,所以我把底部的进度条给取消了。你们可以根据自己的UI,来改变界面)
首先导入项目:
在app的build中,加入
api project(':jjdxm-ijkplayer')
基本上就这些了,详细的过程就不说了。导入之后,将导入的项目中的相关版本改为与app的版本一致,以免发生冲突。
导入依赖:
// 根据需要支持去拓展,在jjdxm-ijkplayer中默认加入了armv7a的了
api 'com.dou361.ijkplayer-armv7a:jjdxm-ijkplayer-armv7a:1.0.0'
api 'com.dou361.ijkplayer-armv5:jjdxm-ijkplayer-armv5:1.0.0'
api 'com.dou361.ijkplayer-arm64:jjdxm-ijkplayer-arm64:1.0.0'
api 'com.dou361.ijkplayer-x86:jjdxm-ijkplayer-x86:1.0.0'
api 'com.dou361.ijkplayer-x86_64:jjdxm-ijkplayer-x86_64:1.0.0'
有可能在编译时,出现 找不到jjdxm-ijkplayer-armv7a包。不要慌~~
先将jjdxm-ijkplayer-armv7a依赖注释掉(导入的项目中可能也有,同样注释掉)
找到你下载的demon中的release 目录,其中有so文件,直接将其中的文件拷贝到app的libs目录中。
好了,大功告成,到这里就集成成功了。接下来就到了码代码的环节了。。。
ViewIjkplayerActivity:
package com.project.evaluationmobile.activity;
import android.content.Context;
import android.content.res.Configuration;
import android.os.PowerManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.dou361.ijkplayer.listener.OnShowThumbnailListener;
import com.dou361.ijkplayer.widget.PlayStateParams;
import com.dou361.ijkplayer.widget.PlayerView;
import com.project.evaluationmobile.R;
import com.project.evaluationmobile.util.MediaUtils;
public class ViewIjkplayerActivity extends AppCompatActivity {
private View rootView;
private PowerManager.WakeLock wakeLock;
private PlayerView player;
private String videoPath = "rtmp://58.200.131.2:1935/livetv/hunantv";
// private String videoPath = "rtmp://192.168.100.177:1935/live/test1";
@Override
protected void onCreate(Bundle savedInstanceState) {