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.
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.
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.
http://xqq.github.io/mpegts.js/demo/
.m2ts
file like BDAV/BDMV with 192 bytes TS packet, or 204 bytes TS packetIf 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.
npm install --save mpegts.js
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.
<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.
You only have to provide a playlist for MediaDataSource
. See multipart.md
See livestream.md
See api.md
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
See design.md
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.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4