Android视频直播、点播播放器哪家强?

本文详细介绍了在Android上使用IjkPlayer和PLDroidPlayer作为视频直播和点播播放器的实现,包括各自的MediaPlayer代理实现、VideoView的修改以及性能测试。通过对比首开时间、CPU占用率和内存使用情况,展示了两者在软解码和硬解码情况下的表现。
摘要由CSDN通过智能技术生成

}

IMeidaPlayerProxy

定义MeidaPlayer的代理接口,所有MediaPlayer的代理必须实现newInstance接口创建MediaPlayer。

interface IMediaPlayerProxy {
IMediaPlayer newInstance();
}

IjkPlayer的MediaPlayer的代理

在使用IjkPlayer之前需要添加依赖,并且将编译好的so库添加到项目中的jniLibs下。

//添加ijkplayer依赖
dependencies {
compile ‘tv.danmaku.ijk.media:ijkplayer-java:0.8.4’
compile ‘tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.4’
compile ‘tv.danmaku.ijk.media:ijkplayer-x86:0.8.4’

}

//IjkMediaPlayer代理,实现IMediaPlayer接口
public class IjkMediaPlayerProxy implements IMediaPlayerProxy, IMediaPlayer {

//声明一个IjkMediaPlayer对象
private IjkMediaPlayer mIjkMediaPlayer;

@Override
public IMediaPlayer newInstance() {
//创建IjkMeidaPlayer对象
mIjkMediaPlayer = new IjkMediaPlayer();
return this;
}

@Override
public void prepareAsync() throws IllegalStateException {
mIjkMediaPlayer.prepareAsync();
}

@Override
public void start() throws IllegalStateException {
mIjkMediaPlayer.start();
}

@Override
public void stop() throws IllegalStateException {
mIjkMediaPlayer.stop();
}

}

PLDroidPlayer的MediaPlayer代理

在使用PLMediaPlayer之前参考[官方文档](()集成PLDroidPlayer

//PLMediaPlayer代理,实现IMediaPlayer接口
public class PLMediaPlayerProxy implements IMediaPlayerProxy, IMediaPlayer {

//定义PLMediaPlayer对象
private PLMediaPlayer mMediaPlayer;
//AVOptions为MediaPlayer的选项配置,例如可以配置开启硬解码
private AVOptions mAvOptions;

@Override
public IMediaPlayer newInstance() {
//创建PLDroidPlayer的PLMediaPlayer对象
mMediaPlayer = new PLMediaPlayer(mContext, mAvOptions);
return this;
}

@Override
public void prepareAsync() throws IllegalStateException {
mMediaPlayer.prepareAsync();
}

@Override
public void start() throws IllegalStateException {
mMediaPlayer.start();
}

@Override
public void stop() throws IllegalStateException {
mMediaPlayer.stop();
}


}

VideoView

VideoView仿照原生VideoView的实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一: 使用javacv来实现,最终也是用过ffmpeg来进行编码和推流,javacv实现到可以直接接收摄像头的帧数据 需要自己实现的代码只是打开摄像头,写一个SurfaceView进行预览,然后实现PreviewCallback将摄像头每一帧的数据交给javacv即可 javacv地址:https://github.com/bytedeco/javacv demo地址:https://github.com/beautifulSoup/RtmpRecoder/tree/master 二: 使用Android自带的编码工具,可实现硬编码,这里有一个国内大神开源的封装很完善的的库yasea,第一种方法需要实现的Camera采集部分也一起封装好了,进行一些简单配置就可以实现编码推流,并且yasea目前已经直接支持摄像头的热切换,和各种滤镜效果 yasea地址(内置demo):https://github.com/begeekmyfriend/yasea 服务器 流媒体服务器我用的是srs,项目地址:https://github.com/ossrs/srs 关于srs的编译、配置、部署、在官方wiki中已经写的很详细了,并且srs同样是国内开发人员开源的项目,有全中文的文档,看起来很方便 这里有最基本的简单编译部署过程 Android直播实现(二)srs流媒体服务器部署 播放器 android端的播放使用vitamio,还是国内的开源播放器,是不是感觉国内的前辈们越来越屌了^~^! vitamio支持几乎所有常见的的视频格式和流媒体协议 vitamio地址(内置demo):https://github.com/yixia/VitamioBundle 这里使用的是yaesa库,先介绍一下直播实现的流程:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值