返回排行榜

xqq/mpegts.js

JavaScript

HTML5 MPEG2-TS / FLV Stream Player

html5playermpegtsmpeg-tsmsemedia-source-extensionslivestreamvideovideo-playerav1hevc
Star 增长趋势
Star
2.3k
Forks
292
周增长
Issues
178
1k2k
2021年3月2022年12月2024年10月2026年7月
制品库npmnpm install mpegts.js
README

mpegts.js npm

日本語 中文说明

HTML5 MPEG2-TS stream player written in TypeScript & JavaScript.

mpegts.js is optimized for low-latency live stream playback, such as DVB/ISDB television or surveillance cameras.

This project is based on flv.js.

Overview

mpegts.js works by transmuxing MPEG2-TS stream into ISO BMFF (Fragmented MP4) segments, followed by feeding mp4 segments into an HTML5 <video> element through Media Source Extensions API.

News

  • v1.8.0

    Support working on iOS Safari with iOS 17.1+ through Apple's ManagedMediaSource API

    Great performance improvements by supporting MSE in Workers on Chrome, Safari 18 (includes iOS)

    Introduced support for AV1 over MPEG-TS

    Introduced support for AV1 over HTTP-FLV defined in Enhanced RTMP

    Support chasing live latency more smoothly by changing playback rate

    Introduced ATSC EAC-3 audio codec in MPEG-TS

    Support Opus and FLAC audio codec over HTTP-FLV (Enhanced RTMP)

  • v1.7.3

    Introduced Enhanced RTMP with HEVC support for FLV.

    Introduced Opus and ATSC AC-3 audio codec support for MPEG-TS.

    Introduced LOAS AAC support for MPEG-TS.

  • v1.7.0

    Introduced H.265/HEVC over MPEG-TS/FLV support.

Demo

http://xqq.github.io/mpegts.js/demo/

demo with aribb24.js

Features

  • Playback for MPEG2-TS stream with H.264/H.265 + AAC codec transported in http(s) or WebSocket
  • Playback for FLV stream with H.264/H.265 + AAC codec transported in http(s) or WebSocket
  • Extremely low latency of less than 1 second in the best case
  • Playback for .m2ts file like BDAV/BDMV with 192 bytes TS packet, or 204 bytes TS packet
  • Support handling dynamic codec parameters change (e.g. video resolution change)
  • Support Chrome, FireFox, Safari, Edge (Old or Chromium) or any Chromium-based browsers
  • Support chasing latency automatically for internal buffer of HTMLMediaElement
  • Low CPU overhead and low memory usage (JS heap takes about 10MiB for each instance)
  • Support extracting PES private data (stream_type=0x06) like ARIB B24 subtitles (with aribb24.js)
  • Support Timed ID3 Metadata (stream_type=0x15) callback (TIMED_ID3_METADATA_ARRIVED)

CORS

If you use standalone video server for MPEG2-TS stream, Access-Control-Allow-Origin header must be configured correctly on video server for cross-origin resource fetching.

See cors.md for more details.

Installation

npm install --save mpegts.js

Build

npm install                 # install dev-dependencies
npm install -g webpack-cli  # install build tool
npm run build               # packaged & minimized js will be emitted in dist folder

cnpm mirror is recommended if you are in Mainland China.

Getting Started

<script src="mpegts.js"></script>
<video id="videoElement"></video>
<script>
    if (mpegts.getFeatureList().mseLivePlayback) {
        var videoElement = document.getElementById('videoElement');
        var player = mpegts.createPlayer({
            type: 'mse',  // could also be mpegts, m2ts, flv
            isLive: true,
            url: 'http://example.com/live/livestream.ts'
        });
        player.attachMediaElement(videoElement);
        player.load();
        player.play();
    }
</script>

mpegts.js could be tested with Simple Realtime Server.

TODO

  • MPEG2-TS static file playback (seeking is not supported now)

Limitations

  • mpeg2video is not supported
  • HTTP MPEG2-TS live stream could not work on old browsers like IE11
  • mpegts.js is not usable on iOS version 17.0 or older caused by the banning of Media Source Extensions (available on iPadOS), iOS 17.1 works through Managed Media Source API

Features inherited from flv.js

  • FLV container with H.264 + AAC / MP3 codec playback
  • Multipart segmented video playback
  • HTTP FLV low latency live stream playback
  • FLV over WebSocket live stream playback
  • Compatible with Chrome, FireFox, Safari 10, IE11 and Edge
  • Extremely low overhead, and hardware accelerated by your browser!

FLV playback limitations

  • MP3 audio codec is currently not working on IE11 / Edge
  • HTTP FLV live stream is not currently working on all browsers, see livestream.md

FLV Multipart playback

You only have to provide a playlist for MediaDataSource. See multipart.md

Livestream playback

See livestream.md

API and Configuration

See api.md

Debug

npm install                 # install dev-dependencies
npm install -g webpack-cli  # install build tool
npm run build:debug         # packaged & minimized js will be emitted in dist folder

Design

See design.md

License

Copyright (C) 2021 magicxqq. All Rights Reserved.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
相关仓库
mrdoob/three.js

JavaScript 3D Library.

JavaScriptnpmMIT Licensejavascript3d
threejs.org
113.9k36.4k
nextlevelbuilder/ui-ux-pro-max-skill

An AI SKILL that provide design intelligence for building professional UI/UX multiple platforms

PythonPyPIMIT Licenseai-skillsantigravity
uupm.cc
108.6k11.6k
chartjs/Chart.js

Simple HTML5 Charts using the <canvas> tag

JavaScriptnpmMIT Licensejavascriptchart
chartjs.org
67.6k11.9k
h5bp/html5-boilerplate

A professional front-end template for building fast, robust, and adaptable web apps or sites.

JavaScriptnpmMIT Licensehtml5-boilerplatehtml5
html5boilerplate.com
57.6k12.3k
tabler/tabler

Tabler is free and open-source HTML Dashboard UI Kit built on Bootstrap

HTMLMIT Licensedashboardhtml
tabler.io
41.3k4.4k
videojs/video.js

Video.js - open source HTML5 video player

JavaScriptnpmOthervideoplayer
videojs.com
39.8k7.5k
SheetJS/sheetjs

📗 SheetJS Spreadsheet Data Toolkit -- New home https://git.sheetjs.com/SheetJS/sheetjs

Apache License 2.0xlsxexcel
sheetjs.com
36.3k7.9k
joshbuchea/HEAD

A simple guide to HTML <head> elements

html5head
htmlhead.dev
30.3k1.9k
Asabeneh/30-Days-Of-React

30 Days of React challenge is a step by step guide to learn React in 30 days. These videos may help too: https://www.youtube.com/channel/UC7PNRuno1rzYPb1xLa4yktw

JavaScriptnpmchallengejavascript
27.5k7.7k
xiaojieonly/Ehviewer_CN_SXJ

ehviewer,用爱发电,快乐前行

COtherscreenshotehviewer
25.5k670
libgdx/libgdx

Desktop/Android/HTML5/iOS Java game development framework

JavaMavenApache License 2.0libgdxjava
libgdx.com
25.2k6.5k
4ian/GDevelop

🎮 Open-source, cross-platform 2D/3D/multiplayer game engine designed for everyone.

JavaScriptnpmOthergamejavascript
gdevelop.io
25k1.5k