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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@somoe-net/somoe-video

v0.2.0

Published

A Vue 3 video player component with HLS/FLV support

Downloads

552

Readme

@somoe-net/somoe-video

基于 Vue 3 的视频播放器组件,支持 HLS / FLV 流媒体,使用 Lucide 图标。

安装

npm install @somoe-net/somoe-video

hls.js 和 flv.js 为可选依赖,按需安装:

npm install hls.js       # HLS 支持
npm install flv.js       # FLV 支持
npm install mpegts.js    # FLV HEVC 降级支持

构建版本

| 文件 | 说明 | 大小 | |------|------|------| | somoe-video.js | ES Module,流媒体库外部依赖(默认) | ~57 KB | | somoe-video.umd.cjs | UMD,流媒体库外部依赖 | ~45 KB | | somoe-video.full.js | ES Module 全量版,内置 hls.js + flv.js + mpegts.js | ~1210 KB | | somoe-video.full.umd.cjs | UMD 全量版,内置 hls.js + flv.js + mpegts.js | ~777 KB | | somoe-video.core.js | ES Module 未压缩版,用于调试 | ~79 KB | | somoe-video.css | 样式文件 | ~13 KB |

  • 默认版:适用于打包工具(Webpack / Vite),流媒体库作为 peerDependencies 按需安装
  • 全量版:适用于 <script> 直接引入,无需额外安装任何流媒体库
  • Core 版:未压缩的 ES Module,便于调试和阅读源码

使用方式

方式一:Vue 组件(推荐)

<template>
  <SomoeVideo
    :options="{
      url: 'https://example.com/video.mp4',
      autoplay: false,
      volume: 0.6,
      controls: true
    }"
  />
</template>

<script setup>
import { SomoeVideo } from '@somoe-net/somoe-video'
import '@somoe-net/somoe-video/style.css'
</script>

方式二:Vue 插件(全局注册)

import { createApp } from 'vue'
import { SomoeVideoPlugin } from '@somoe-net/somoe-video'
import '@somoe-net/somoe-video/style.css'

const app = createApp(App)
app.use(SomoeVideoPlugin)
// 现在可在任意组件中使用 <SomoeVideo />

方式三:原生 JS

import { createSomoeVideo } from '@somoe-net/somoe-video'
import '@somoe-net/somoe-video/style.css'

const player = createSomoeVideo('#container', {
  url: 'https://example.com/video.mp4',
  controls: true,
  autoplay: false,
  volume: 0.7
})

方式四:外链 script(默认版)

需要手动引入 Vue 和流媒体库:

<link rel="stylesheet" href="https://unpkg.com/@somoe-net/somoe-video/dist/somoe-video.css">
<script src="https://unpkg.com/vue@3"></script>
<script src="https://cdn.jsdelivr.net/npm/hls.js@1/dist/hls.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/flv.js@1/dist/flv.min.js"></script>
<script src="https://unpkg.com/@somoe-net/somoe-video/dist/somoe-video.umd.cjs"></script>
<script>
  SomoeVideo.createSomoeVideo('#player', {
    url: 'https://example.com/video.mp4',
    controls: true
  })
</script>

方式五:外链 script(全量版)

只需引入 Vue,流媒体库已内置:

<link rel="stylesheet" href="https://unpkg.com/@somoe-net/somoe-video/dist/somoe-video.css">
<script src="https://unpkg.com/vue@3"></script>
<script src="https://unpkg.com/@somoe-net/somoe-video/dist/somoe-video.full.umd.cjs"></script>
<script>
  SomoeVideo.createSomoeVideo('#player', {
    url: 'https://example.com/live/stream.m3u8',
    streamType: 'hls',
    isLiveStream: true,
    controls: true
  })
</script>

SomoeVideoOptions

| 属性 | 类型 | 默认值 | 说明 | |------|------|--------|------| | url | string | '' | 视频地址 | | poster | string | '' | 封面图 | | autoplay | boolean | false | 自动播放 | | loop | boolean | false | 循环播放 | | muted | boolean | false | 静音 | | volume | number | 1 | 音量 (0-1) | | theme | string | '#FF5722' | 主题色 | | controls | boolean | true | 显示控制条 | | isLiveStream | boolean | false | 是否直播流 | | streamType | 'hls' \| 'flv' \| 'auto' | 'auto' | 流媒体类型 | | objectFit | string | — | 视频 object-fit 样式,如 'cover'、'contain' | | contextMenu | ContextMenuItem[] | — | 自定义右键菜单 | | playlist | PlaylistItem[] | — | 播放列表数据 |

Events

| 事件 | 参数 | 说明 | |------|------|------| | playing-change | (isPlaying: boolean) | 播放状态变化 | | volume-change | (volume: number, muted: boolean) | 音量变化 | | time-update | (currentTime: number, duration: number) | 时间更新 | | ended | - | 播放结束 | | playlist-select | (index: number) | 播放列表选择 |

TypeScript

interface SomoeVideoOptions {
  url: string
  poster?: string
  autoplay?: boolean
  loop?: boolean
  muted?: boolean
  volume?: number
  theme?: string
  controls?: boolean
  isLiveStream?: boolean
  streamType?: 'hls' | 'dash' | 'webrtc' | 'flv' | 'auto'
  objectFit?: string
  contextMenu?: ContextMenuItem[]
  playlist?: PlaylistItem[]
}

功能特性

  • MP4 / WebM 原生视频播放
  • HLS 流媒体(需安装 hls.js 或使用全量版)
  • FLV 流媒体(需安装 flv.js / mpegts.js 或使用全量版)
  • 自动检测流类型(.m3u8 → HLS, .flv → FLV)
  • FLV HEVC 编码自动降级(flv.js → mpegts.js → CDN)
  • 直播模式:LIVE 标志 + 刷新 + 录制
  • 录制功能(captureStream + MediaRecorder → WebM 下载)
  • 点击播放/暂停,双击全屏
  • 控件自动隐藏(3.8s 无操作淡出)
  • 全屏模式控件自动放大
  • 播放列表侧边栏
  • 设置面板(画质/速度/字幕/主题)
  • 右键上下文菜单
  • CSS 变量主题化
  • Lucide 图标

主题自定义

:root {
  --sv-primary: #FF5722;
  --sv-primary-hover: #e64a19;
  --sv-icon-size: 20px;
  --sv-icon-color: #fff;
  --sv-transition-speed: 0.3s;
  --sv-radius: 4px;
}

开发

npm run dev            # 启动 playground
npm run build          # 构建所有版本
npm run build:default  # 构建默认版(ES + UMD)
npm run build:full     # 构建全量版(UMD,内置流媒体库)
npm run build:core     # 构建 Core 版(ES,未压缩)

License

MIT