npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

video-play

v0.1.5

Published

这是一个基于阿里云播放器插件而进一步封装的播放工具

Downloads

4

Readme

该插件vue2版本,基于aliyun播放器二次封装,官方地址为:https://player.alicdn.com/aliplayer/index.html

install

npm install video-play

use

import videoComp from 'video-play'
import 'video-play/plug.css'
Vue.use(videoComp)

config

  • 必须给播放器容器设置宽高
  • 组件传参,videoConf为对象形式

feature

  • 可以通过方法调用,对视频进行一系列操作
  • 可以在视频表面添加元素、按钮,且全屏后也不会遮挡
  • 试看模式
  • 视频截图(自定义水印)

methods

方法挂载在组件的instancePlayer实例上,通过refs获取并调用 |name| manual | |--|--| | play | 开始播放 | | pause | 暂停 | | seek | 跳转到指定秒数(Number) | | dispose | 销毁播放器 | | setRotate | 旋转指定度数(Number) | | getRotate | 返回当前旋转的度数 | | setImage | 镜像模式('horizon': 水平镜像; 'vertical': 垂直镜像) | | setSpeed | 倍速播放(Float) | | mute | 静音 | | setVolume | 设置音量(0.1-1) | | getCurrentTime | 获取当前播放进度(秒) |

Demo

<template>
  <div id="app">
    <!-- 记得给播放器设置宽高,见底部的样式 -->
    <video-comp class="videoComp-container" ref="videoComp" :videoConf="videoConf">
      <!-- 如果将元素浮在视频上方,使用template包裹起来,并取名anyPosition,如下 -->
      <template #anyPosition>
        <button class="toggle" @click="$refs.videoComp.fullClick()">浮在上方的全屏切换按钮</button>
      </template>
    </video-comp>

    <button @click="$refs.videoComp.instancePlayer.play()">播放</button>
    <button @click="$refs.videoComp.instancePlayer.pause()">暂停</button>
    <input type="text" v-model.number="num">
    <button @click="$refs.videoComp.instancePlayer.seek(num)">跳到{{num}}秒的位置</button>
    <button @click="$refs.videoComp.instancePlayer.dispose()">停止(销毁播放器)</button>
    <br />
    <input type="text" v-model.number="rotateNum">
    <button @click="$refs.videoComp.instancePlayer.setRotate(rotateNum)">旋转{{rotateNum}}°(顺时针)</button>
    <button @click="$refs.videoComp.instancePlayer.getRotate()">获取旋转度数</button>
    <span>旋转度数为:{{rotate}}</span>
    <button @click="$refs.videoComp.instancePlayer.setImage('horizon')">水平镜像</button>
    <button @click="$refs.videoComp.instancePlayer.setImage('vertical')">垂直镜像</button>
    <button @click="$refs.videoComp.instancePlayer.setSpeed(2)">两倍播放</button>
    <button @click="$refs.videoComp.instancePlayer.mute()">静音</button>
    <button @click="$refs.videoComp.instancePlayer.setVolume(0.1)">音量为10%</button>

  </div>
</template>

<script>

export default {
  data() {
    return {
      num: null,
      rotateNum: null,
      rotate: null
    }
  },
  computed: {
    videoConf: function() {
      return {
        id: "myVideo-1",  // 如果有多个视频,id需保持唯一性
        source: "http://cloud.video.taobao.com/play/u/2554695624/p/1/e/6/t/1/fv/102/28552077.mp4", //视频地址
        cover: "http://cdn.img.mtedu.com/images/assignment/day_3.jpg", //播放器封面图
        // vid: '0f825a270513451eb9067324ef754428',
        // playauth: "cml0eVRva2VuIjoiQ0FJU2h3TjFxNkZAyOTE3NDA3ODM2fQ==",
        // progressMarkers: [],
        width: "100%",
        height: "100%",
        // videoWidth: "", // 视频的宽高, 防止旋转和镜像时溢出
        // videoHeight: "", 
        autoplay: false, // 浏览器不允许自动播放,除非配合静音
        encryptType: 1,
        isLive: false,
        rePlay: false,
        preload: true,
        cover: "",
        playsinline: false, // 非全屏模式(即内联的方式
        useH5Prism: true, // 启用H5播放器
        controlBarVisibility: "always",
        // useFlashPrism: false,
        snapshotWatermark: {
          //截图的水印
          left: "100",
          top: "100",
          text: "测试水印",
          font: "italic bold 48px 宋体",
          strokeColor: "red",
          fillColor: "green",
        },
        extraInfo: {
          // 允许匿名跨域访问, 配合截图
          crossOrigin: "anonymous",
        },
        defaultDefinition: [],
        skinLayout: [   // 播放器外观和控件, 去掉该属性,会显示默认外观和控件
          // 截图
          {
            name: "bigPlayButton",
            align: "blabs",
            x: 30,
            y: 80,
          },
          {
            name: "H5Loading",
            align: "cc",
          },
          {
            name: "errorDisplay",
            align: "tlabs",
            x: 0,
            y: 0,
          },
          {
            name: "infoDisplay",
          },
          {
            name: "tooltip",
            align: "blabs",
            x: 0,
            y: 56,
          },
          {
            name: "thumbnail",
          },
          // 控件
          {
            name: "controlBar",
            align: "blabs",
            x: 0,
            y: 0,
            children: [
              {
                name: "progress",
                align: "blabs",
                x: 0,
                y: 44,
              },
              {
                name: "playButton",
                align: "tl",
                x: 15,
                y: 12,
              },
              {
                name: "timeDisplay",
                align: "tl",
                x: 10,
                y: 7,
              },
              {
                name: "fullScreenButton",
                align: "tr",
                x: 10,
                y: 12,
              },
              {
                name: "subtitle",
                align: "tr",
                x: 15,
                y: 12,
              },
              {
                name: "setting",
                align: "tr",
                x: 15,
                y: 12,
              },
              {
                name: "volume",
                align: "tr",
                x: 5,
                y: 10,
              },
              {
                name: "snapshot",
                align: "tr",
                x: 10,
                y: 12,
              },
            ],
          },
        ],
        progressMarkers: [
          {
            // 进度条上打点功能
            offset: 30,
            isCustomized: true,
            coverUrl:   // 打点的预览图
              "https://alivc-demo-vod.aliyuncs.com/image/cover/9A3F562E595E4764AD1DD546FA52C6E5-6-2.png",
            title: "test title",
            describe: "test string",
          },
          {
            offset: 50,
            isCustomized: true,
            coverUrl:
              "https://alivc-demo-vod.aliyuncs.com/image/cover/1E7F402241CD4C0F94AD2BBB5CCC3EC7-6-2.png",
            title: "test title",
            describe: "test string",
          }
        ],
        components: [ // 试看操作,看需求是否需要(理论上可以添加其他内容,只需将时间改成视频总时长)
          {
            "name": 'PreviewVodComponent',
            "type": AliPlayerComponent.PreviewVodComponent,
            "args": [10, '#endPreviewTemplate','<span id="payClass">购买课程</span> 观看完整视频']// 第三个参数是显示可是看后面的文字
          },
          {
            name: "ProgressComponent",
            type: AliPlayerComponent.ProgressComponent,
          }
        ]
      }
    }
  }
}
</script>

<style>

.videoComp-container {
  width: 400px;
  height: 400px;
}
.toggle {
  position: absolute;
  top: 10%;
  left: 50%;
  transform: translateX(-50%);
}

</style>