Skip to content

zyMedia是掌阅科技开源的一款基于HTML5的、轻量级的、实现移动端全平台统一UI的多媒体播放器,该播放器已经在千万级设备上适配使用

License

Notifications You must be signed in to change notification settings

catpigdog/zyMedia

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

zyMedia —— 一个轻量级媒体播放器

zyMedia是一款基于HTML5原生multimedia、自定义UI的多媒体播放器。

已用于公司的各非本地化产品线。

  • 支持Android、iOS移动端平台
  • 支持主流移动设备及国内TOP10移动端浏览器 (机型和浏览器版本更新较快,欢迎提issue,方便请标注下机型和环境,比如客户端版本(客户端内打开),浏览器默认的navigator.userAgent(浏览器打开))
  • 支持多种视频、音频格式,如mp4、mp3、oga、webm等
  • 轻量,UglifyJS压缩15KB,gzip约5k

视频界面展示

video ui

使用说明

  1. 引入样式文件zy.media.css和js文件zy.media.js
  2. 输入html结构,例如视频,其中video标签的data-config属性用于设置参数,
<div class="zy_media">
    <video poster="test.jpg" data-config='{"mediaTitle": "《疯狂动物城》--腾讯视频"}'>
        <source src="test.mp4" type="video/mp4">
        您的浏览器不支持HTML5视频
    </video>
</div>
  1. 绑定媒体节点,zymedia是一个全局对象,可重复调用,不返回视频实例,需要的话建议直接获取视频和监听相应事件,第二个参数是用于批量设置视频参数,示例
    zymedia('video');
    // zymedia('video', {...参数});
zymedia是做批量处理用的,单独设置用每个音视频上的data-config,
每个音视频的src可随时替换(比如document.querySelector('video').src = 'test.mp4'),容器尺寸会保持不变

参数说明

  • type: ''
    指定媒体类型,默认空

  • mediaTitle: ''
    设置媒体标题,默认空,不展示

  • nativeControls: false
    强制用原生的播放控制器,默认不使用,true为使用

  • autoplay: false
    是否自动播放,默认否,true为自动播放

  • preload: 'none'
    是否预加载,默认关闭,和原生preload对应,其他值为metadata|auto|''

  • videoWidth: '100%'
    指定视频宽,默认100%

  • videoHeight: 'auto'
    指定视频高,默认auto

  • aspectRation: (16 / 9)
    指定视频宽高比,默认16:9

  • audioWidth: '100%'
    指定音频宽,默认100%

  • audioHeight: 44
    指定音频高,默认44px

  • autoLoop: false
    是否循环播放,默认否,true为无限循环

  • timeFormatType: 1
    时间格式类型,默认mm:ss,2为m:s

  • alwaysShowHours: false
    是否强制显示小时位,默认否,true为显示

  • alwaysShowControls: false
    是否始终显示控制栏,默认否,自动隐藏,true为始终显示

  • hideVideoControlsOnLoad: false
    加载时是否隐藏视频控制栏,默认否,true为隐藏

  • enableFullscreen: true
    是否显示全屏按钮,默认显示,false为不显示

  • pauseOtherPlayers: true
    是否播放唯一,默认唯一,播放时将暂停其他播放实例,false为不唯一

  • enableVisibilityState: true,
    是否页面不可见时暂停当前所有播放,默认暂停

  • duration: 0
    指定媒体时长,默认0

  • success: null
    实例化成功时的回调,默认无

  • error: null
    实例化错误时的回调,默认无

  • beforePlay: null
    点击播放前的交互,默认无,如果函数返回true,将不播放视频

已测试移动设备列表

  • 小米1、小米2s、小米 MI3、红米、小米 Mi-4C、小米平板 MI PAD

  • vivo X5Max L、vivo Y33、vivo s7i(t)、vivo X6

  • 联想sisley2OFPL、联想A3860、联想 s720、联想 A820T

  • 魅蓝m1、魅蓝m2 note、魅族MX4、魅族 MX5、魅族 MX M031、魅蓝 note 2 M571C

  • NX(yunOS)、NX青橙(yunOS)

  • HTC T328d、HTC onex、HTC S710d、HTC X920e、HTC Desire

  • coolpad 8190、Coolpad5950

  • OPPO A31、OPPO R821T

  • 三星i9100、三星 GT-I9000、三星 GT-I9220、三星 GT-S5360、三星 GT-i9300、三星平板 Galaxy Tab S SM-T805C

  • 华为 C8650、华为 C8812、华为 MT1-U06、华为 PE-TL20(荣耀6plus)、华为荣耀5X、华为 A199、Honor U8860、荣耀6 H60-L01、华为 GRA-UL10、华为荣耀平板

  • 金立v182、GioNEE GN9000L、GioNEE GN9001L

  • iPhone4S、iPhone5C、iPhone5S、iPhone 6、iPhone 6 Plus、iPhone 7 Plus, iPad mini、iPad

  • nexus 5x、SONY S39h、AMOI N828、TCL S720T、Newman、中兴V960、小辣椒LA2-L、摩托罗拉ME863、读者 i800、昂达平板 V819mini

常见问题

  • autoplay自动播放受限(preload类似)

    据说Android4+和iOS6 - 9开始,禁用了非用户行为触发autoplay,chrome可以在flags里启用“停用媒体播放的手势要求”

    2016.11.17 苹果开发者官网的解释是:

    Warning: To prevent unsolicited downloads over cellular networks at the user’s expense, embedded media cannot be played automatically in Safari on iOS—the user always initiates playback.

    iOS10+,策略已发生改变,允许静音下自动播放webkit官方博客

  • 全屏播放受限

    插件的全屏按钮只是触发浏览器(或客户端浏览器内核)全屏事件,是否能全屏要看浏览器或客户端自身实现。

  • 黑边

    通常是poster图的尺寸比例和视频尺寸比例不一致,如果不能自己裁剪图的话,可以把poster图单拿出来,盖在视频上。

  • 音视频格式支持

    插件使用的浏览器自身的解码,具体解码要看浏览器自身对格式支持情况和播放时环境,通常浏览器支持情况见维基百科MDN

开源交流

  • QQ群:329474804

About

zyMedia是掌阅科技开源的一款基于HTML5的、轻量级的、实现移动端全平台统一UI的多媒体播放器,该播放器已经在千万级设备上适配使用

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 88.4%
  • CSS 11.6%