效果展示

播放器功能

  1. 截图
  2. 倍速播放
  3. 指定区域播放
  4. 开始, 停止, 暂停
  5. 播放电视cctv-1 cctv6
  6. 播放网络视频
  7. 播放本地视频

原理

atuojs调用七牛云直播sdk, 快速制作自己的播放器

七牛直播云官方文档

https://developer.qiniu.com/pili/1210/the-android-client-sdk\

PLDroidPlayer简介

PLDroidPlayer 是一个适用于 Android 平台的音视频播放器 SDK,可高度定制化和二次开发,为 Android 开发者提供了简单、快捷的接口,帮助开发者在 Android 平台上快速开发播放器应用。

步骤

  1. 界面

    "ui";
    ui.layout(<vertical></vertical>);
    
  2. 查看七牛云官方文档, 看看他们的sdk有什么功能

    1. 主流架构支持, 包括 arm64-v8a, armeabi-v7a 与 x86
    2. 后台播放, 退到后台只播放音频
    3. IP 地址播放, URL 格式:protocol://ip/path?domain=xxxx.com
    4. 设置播放封面, 在播放开始前显示封面 view
    5. 以上这些都不是核心功能
  3. 核心功能

    1. 播放视频
    2. 播放按钮
    3. 停止按钮
    4. 暂停按钮
    5. 倍速按钮
    6. 截图
    7. 暂时先实现以上功能, 其他功能可参考文档自行添加
  4. 修改ui

    文档中对PLMediaPlayer的介绍

    PLDroidPlayer SDK 提供的 PLMediaPlayer 实现了一个媒体播放器的各种基础功能和接口,与 Android 官方的 MediaPlayer 的设计基本保持一致。

    PLMediaPlayer 不是一个 View 控件,因此,如果希望用它播放视频而不是纯音频的话,则需要在布局文件中自己定义一个 SurfaceView 或者 TextureView 控件,然后将 Surface 或者 SurfaceHolder 传递给 PLMediaPlayer

    所以我们要添加一个surfaceView, 以及几个控制按钮

    ui.layout(<vertical gravity="center"><vertical bg="#000000"><horizontal><button id="start">start</button><button id="stop">stop</button><button id="pause">pause</button></horizontal><horizontal><button id="slower">slower</button><button id="normal">normal</button><button id="faster">faster</button></horizontal><horizontal><button id="captureImage">captureImage</button></horizontal><texttext="作者: 牙叔"margin="10"textSize="38sp"textStyle="bold"gravity="center"textColor="#ddffffff"></text></vertical><frame android:layout_width="wrap_content" android:layout_height="wrap_content" bg="#ff00ff"><android.view.SurfaceView android:id="surfaceView" android:layout_gravity="center" /></frame></vertical>
    );
  5. 创建PLMediaPlayer实例

    PLMediaPlayer mMediaPlayer = new PLMediaPlayer(mContext, mAVOptions);

    PLMediaPlayer这个类从哪里来?

    这个就是SDK, 包括两部分

    1. java类, 由adnroid studio 生成dex, dex中有我们需要的java类
    2. so, 官方仓库的releases文件夹中有
      1. libqcOpenSSL.so
      2. libQPlayer.so
  6. 加载类

    let dexPath = "./classes_merge.dex";
    runtime.loadDex(dexPath);
    importClass(com.pili.pldroid.player.PLMediaPlayer);
    importClass(com.pili.pldroid.player.PLOnCompletionListener);
    importClass(com.pili.pldroid.player.PLOnErrorListener);
    ...
    
  7. 加载so

    copyJniLibs();
    
  8. 创建PLMediaPlayer实例

    mMediaPlayer = new PLMediaPlayer(activity, getAVOptions());
    
  9. AVOptions

    PLDroidPlayer SDK 提供的 AVOptions 类,可以用来配置播放参数

    function getAVOptions() {mAVOptions = new AVOptions();// 超时mAVOptions.setInteger(AVOptions.KEY_PREPARE_TIMEOUT, 10 * 1000);...return mAVOptions;
    }
    
  10. SurfaceHolder 传递给 PLMediaPlayer

    mMediaPlayer.setDisplay(mSurfaceView.getHolder());
    
  11. 网上找一个直播地址cctv-6, 看着好像差不多了, 试着播放一下

    
    mMediaPlayer.setDataSource(mVideoPath);
    mMediaPlayer.prepareAsync();
    setTimeout(function () {mMediaPlayer.start();
    }, 3000);
    
  12. 完美播放视频

  13. 以上就是最autojs使用七牛云SDK最简单的代码, 实际上你可能对音视频有更多的控制需求,

    不过demo跑通了, 添加其他功能, 问题都不大

  14. 播放视频代码仅仅150行, 相信你一定看的懂

微信公众号 AutoJsPro教程

QQ群

747748653

完整源码

点击查看

autojs之小白带你一步一步定制播放器相关推荐

  1. 100个vc小项目开发:二、一步一点设计音乐播放器 [I]

    100个vc小项目开发:二.一步一点设计音乐播放器 [源码解读] 文章作者: July 软件来源:开源 ================== 1.有不正之处,恳请指正. 2.本文贴出的是关键实现代码部 ...

  2. 微信小应用,又一大神,音乐播放器

    2019独角兽企业重金招聘Python工程师标准>>> 下载:http://www.see-source.com/weixinwidget/list.html 微信小应用,又一大神, ...

  3. 简单几步实现网络音乐播放器(Python爬虫版百度FM)

    Python入门之爬取百度音乐 先说一下为什么会有这篇文章,首先肯定是有这个需求了,本人出差在外地,这里的网速卡到爆,根本支撑不了在线听歌的要求,所以就想下载到本地来慢慢听.这可是python的绝活, ...

  4. 小D学blend-----优美简洁的mp3播放器

    运行环境:blend 4.0或者visual studio 2010(silverlgiht开发环境需要安装好) 本例实现了mp3的一些基本功能:如播放.暂停.停止.循环播放.静音.调节音量等! 下面 ...

  5. 一步一步实战HTML音乐播放器

    在这里我用HTML5从头开始一步一步来制作一个简约的音乐播放器,大家可以参考一下,接下来正式开始. 音乐播放器效果 播放器分析 这里将播放器分两块来做: 视图层(html + css) 逻辑层 ( j ...

  6. 简单几步实现网络音乐播放器(Qt版百度FM)

                                  百度FM音乐Qt版本 很久之前写的软件了,一直没有总结,也懒得继续开发了,这里简单总结一下,也算是对自己的努力一个交代吧. 先来个ubunt ...

  7. Vue快速入门(附实战小项目:记事本、天气预报、音乐播放器)

    文章目录 一.前言 二.Vue.js安装 三.初始化Vue项目 四.项目目录解析 五.Vue核心指令 1.插值表达式 2.v-text 3.v-html 4.v-on 5.计数器实战 6.v-show ...

  8. 简单应用MySQL的音乐播放器小项目

    前言 本文是我学MySQL后,做的一个小项目,因为初学,没有做的很高大上,代码方面也一般般,但是总归是自己做的,还是有点小小成就感的,在这里和大家分享下,喜欢的点个赞,一起冲冲冲. 这个项目主要是想锻 ...

  9. 12_微信小程序之微信视频号滚动自动播放视频效果实现

    12_微信小程序之微信视频号滚动自动播放视频效果实现 一.获取视频的分辨率.时长.缩略图 微信小程序提供了三种方式可以获取视频的分辨率.时长: wx.getVideoInfo(Object) :只能用 ...

最新文章

  1. Java 中这个叫 Future 的东东,你用过嘛?
  2. mac python3.8怎样安装scrapy_Python爬虫与mac下Scrapy配置
  3. Hibernate基础学习2
  4. OpenCV统计米粒数目-计算联通区域的个数及联通区域内像素的个数
  5. 微服务网关实现用户访问权限识别拦截
  6. java上传视频到七牛云_Java进阶学习:将文件上传到七牛云中
  7. spring cloud bus_Spring Cloud学习笔记--消息总线(Bus)
  8. 聊天宝解散,多闪、马桶MT还会远吗?
  9. linux 防火墙检查
  10. Iframe的基础应用——关于Iframe刷页问题的两种方法
  11. 海康ehome协议分析(4):GPS上传
  12. 正向随机微分方程的经典数值格式模拟
  13. 条件概率和正则概率(完)
  14. SourceTree拉取代码出现错误
  15. 高中数学一轮复习逆袭必要学习方法
  16. 波束管理(Beam Management)
  17. deepin安装tftp服务器_Win10频发蓝屏,深度Deepin系统,调试华为AC和AP
  18. Cache简介(一)
  19. 【读书笔记】概率图模型——基于R语言(一)
  20. 泛泰binx和ota升级包下载工具Android版[2013.6.7提供源代码]

热门文章

  1. EOS账户如何工作,我们怎样获得EOS账户?
  2. map geometry wkt转化
  3. 中年危机难解,58同城如何继续“神奇”之路?
  4. 如何使用ABBYY FineReader 14标记文本
  5. 【AI工程】02-AI工程(AI Engineering)面面观
  6. STM32 TIM1输入捕获测试输入信号的频率
  7. 如何免费把OFD格式转换成WORD
  8. codeforces 614B Geda's Code
  9. 9个非常实用的CSS图标库
  10. 如何修复rpc服务器,RPC服务器不可用修复工具