HDMediaPlayer

该类包依托于谷歌Mediaplayer二次封装,一行代码就可以实现播放的逻辑。
谷歌中国API链接: Google官网API

Github地址

https://github.com/yinhaide/HDMediaPlayer

源代码下载

https://download.csdn.net/download/yinhaide/12010382

特性

  • 该类支持播放格式有:音乐(.mp3、.wav、.ogg)、视频(.mp4、.3gp)

  • 支持播放本地音频、视频

  • 支持播放Assets目录下的音频、视频

  • 支持播放网络网络流媒体(仅限上述格式)

如何快速集成

导入方式

在工程级别的build.gradle添加

allprojects {repositories {...maven { url 'https://jitpack.io' }}
}

在应用级别的build.gradle添加

api 'com.github.yinhaide:HDMediaPlayer:0.0.5'

如何使用

  • 一行代码实现播放Assets目录下的mp4:
MediaPlayerHelper.getInstance().setSurfaceView(surfaceView).playAsset(context,"test.mp4");
  • 一行代码实现播放Assets目录下的mp3:
MediaPlayerHelper.getInstance().playAsset(context,"test.mp3");
  • 一行代码实现播放网络流媒体或者本地全路径流媒体:
/*** urlString 可为网络流媒体连接,也可以为本地存储全路径链接*/
MediaPlayerHelper.getInstance().setSurfaceView(surfaceView).play(urlString);
  • 如果想得到详细的回调信息:
MediaPlayerHelper.getInstance().setMediaPlayerHelperCallBack(new MediaPlayerHelper.MediaPlayerHelperCallBack() {@Overridepublic void onCallBack(MediaPlayerHelper.CallBackState state, MediaPlayerHelper mediaPlayerHelper, Object... args) {Log.v(TAG,"--"+state.toString());if(state== MediaPlayerHelper.CallBackState.PROGRESS){int percent=(int)args[0];Log.v(TAG,"--progress:"+percent);}}
});
  • 更多的用法请查看demo:
/** 设置播放进度回调时间间隔 */
MediaPlayerHelper.getInstance().setProgressInterval(msec);
/** 获得MediaPlayer对象,进行更多的自定义的操作 */
MediaPlayerHelper.getInstance().getMediaPlayer().pause();
MediaPlayerHelper.getInstance().getMediaPlayer().start();
MediaPlayerHelper.getInstance().getMediaPlayer().stop();

注意点

1、播放结束后到下次播放有黑屏现象

在部分配置比较低的电视或者手机设备中,视频播放完毕到下次播放之间可能存在1s左右的黑屏现象,原因是部分机器软解吗能力较弱,需要将数据解码放在内存当中导致黑屏。解决方案是开启手机的硬件加速能力,让硬件协助解码,消除黑屏现象。

<applicationandroid:hardwareAccelerated="true"...
</application>

2、部分机型/电视存在黑屏有声音的现象

在部分机型中,会有播放没画面的,原因是因为SurfaceHolder可能在创建的时候尺寸不对,需要动态赋值。这个操作必须在主线程中进行。

@Override
public void surfaceCreated(SurfaceHolder holder) {...if(holder != null && uiHolder.surfaceView != null){uiHolder.surfaceView.post(() -> holder.setFixedSize(uiHolder.surfaceView.getWidth(),uiHolder.surfaceView.getHeight()));}...
}

这个项目会持续更新中…

都看到这里了,如果觉得写的可以或者对你有帮助的话,顺手给个星星点下Star~

这个控件内部采用一个Fragment框架,如果有兴趣的话可以去了解一下

  • https://github.com/yinhaide/HDRocket

关于我

  • Email: 123302687@qq.com
  • Github: https://github.com/yinhaide
  • 简书: https://www.jianshu.com/u/33c3dd2ceaa3
  • CSDN: https://blog.csdn.net/yinhaide

Android使用MediaPlayer播放流媒体,支持远程以及本地流媒体,一行代码实现相关推荐

  1. Android之MediaPlayer播放网络视频的实现方法

    前段时间忙于工作,现在有时间来分享一下: 这篇文章主要介绍了Android的MediaPlayer播放网络视频的实现方法,是一个非常实用的功能,需要的朋友可以参考下 前面讲解了MediaPlayer播 ...

  2. Android使用MediaPlayer播放音频

    Android使用MediaPlayer播放音频 一.目标 二.最终实现 三.接下来 四.Finally 开发<Android高仿iOS Messages声音播放波形效果>完成后,Tape ...

  3. android view存储为jpg,Android长按imageview把图片保存到本地的实例代码

    工具类 之前用 AsyncTask 现在改用rxJava public class SaveImageUtils { public static void imageSave(final ImageV ...

  4. Android 使用MediaPlayer播放音频详解

    目录 一.官方资料 二.简单介绍 三.MediaPlayer使用 1.创建MediaPlayer实例 2.重要API 3.状态图 4.代码 5.常用API 6.辅助效果 总结 一.官方资料 Media ...

  5. Android 使用MediaPlayer播放本地视频

    MediaPlayer可以播放视频和音频,并且它支持本地和网络文件的播放.本篇文章是使用MediaPlayer播放本地视频,如果觉得使用MediaPlayer比较麻烦,也可以选择VideoView播放 ...

  6. android播放mp3方法,Android之MediaPlayer播放音频与视频

    本节带来的是Android多媒体中的--MediaPlayer,我们可以通过这个API来播放音频和视频 该类是Androd多媒体框架中的一个重要组件,通过该类,我们可以以最小的步骤来获取,解码 和播放 ...

  7. Android 使用MediaPlayer播放网络音频

    一.前言 MediaPlayer是Android自带的一个多媒体播放类,可以播放音视频流或者本地音视频文件.MediaPlayer方法的调用需要在一定的状态下,下图是一个MediaPlayer对象被支 ...

  8. android原生MediaPlayer播放本地的m3u8

    背景 遇到某个需求,需要播放百度网盘的视频.但是通过百度网盘的sdk获取到的视频url是由若干个ts片段组成的m3u8播放源.然后把这个m3u8的播放源放在本地,也就是说m3u8是一个本地播放源.那么 ...

  9. android 使用mediaplayer播放网络音乐

    关于mediaplayer 的介绍 MediaPlayer是Android自带的一个多媒体播放类,可以播放音视频流或者本地音视频文件.MediaPlayer方法的调用需要在一定的状态下,下图是一个Me ...

最新文章

  1. Win7在IIS7中启用CGI
  2. 汇编语言 把最大值放入max 把最小值放入min_Excel的MAX和MIN,如何用白话弄懂?...
  3. 修改MySQL数据文件默认路径
  4. jQuery设置radio、select、checkbox只读属性后,如何在后台得到数据
  5. linux主机数据拷贝,linux 服务器之间拷贝文件
  6. 整理-----内置函数
  7. php执行npm命令_npm系列之命令执行
  8. 兼任华为云总裁 余承东能否再续“终端辉煌”
  9. Java面向对象之继承、super关键字、方法重写
  10. Mybatis(持久层的框架),注入的三种方式
  11. 深度学习花书-2.9 伪逆矩阵
  12. 浅谈几种常见 RAID 的异同
  13. python如何删除对象_Python-从列表中删除对象
  14. 一张图学会Python3的基本用法
  15. 工科数学分析序言及索引(不断更新中)
  16. HTC Vive榜单:盘点一周最受欢迎的VR应用
  17. win10安装无法创建新分区也找不到现有分区问题
  18. Go http Server
  19. 关于大地测量领域常用的角度知识汇总(方位角,竖直角)
  20. oppo8.0系统最简单激活xposed框架的经验

热门文章

  1. VS2017添加qt-vsaddin-msvc2017-2.7.1.vsix
  2. 链表应用之多项式相加
  3. 湛蓝.Net代码生成器发布了
  4. 华晨宏盛:只需建立正确的理财观,把握科学的理财办法
  5. 基于 DataOps 的运营商大数据平台探索
  6. 【毕业设计】大数据客户价值分析(RFM模型)
  7. Win10搜索文件后新窗口打开
  8. 使用vs2019创建win32动态链接库
  9. 37%,最佳停止观望点
  10. 解决 TypeError: Cannot read properties of undefined (reading ‘push‘) 错误提示