mmmexplorer

OBSERVED MMM COMMIT #659

Add stream player nodes for MPEG transport streams and HLS

mmm-observation:sha256:2056713dc2435efec7b85b23ca09475fe7b2e2133e04325ffeb6516755922385

Signed revision

Revision ID
mmm-revision:sha256:b5c128fc0fe0a2f32e080d5c13290da6c7e5eb11256a0fef53a4d8c0da538eb3
Backend
Git
Issued
2026-09-25 03:16:09 UTC
Manifest
mmm-manifest:sha256:a55931b8f44c34f0c8f06c2158507d0f9c39856ae31b7434e2a6fafb4fc1eb14

CANONICAL RECORD VIEW

Revision payload

{
  "backend": {
    "author": {
      "email": "drschwabe@fastmail.com",
      "name": "Derrick Schwabe",
      "time": 1790306169
    },
    "commit": "git:sha1:4b5316528b33a7358c2f952677efaa255538d66a",
    "committer": {
      "email": "drschwabe@fastmail.com",
      "name": "Derrick Schwabe",
      "time": 1790306169
    },
    "manifest": "mmm-manifest:sha256:a55931b8f44c34f0c8f06c2158507d0f9c39856ae31b7434e2a6fafb4fc1eb14",
    "message": "Add stream player nodes for MPEG transport streams and HLS\n\nA Stream player plays .ts, .m2ts, .mts and .m2t files and HLS playlists\n(VOD or live) in the same chrome as a Video player, so its transport,\nvolume, and timeline input work the same way. Live streams show a LIVE\nbadge instead of a timeline input.\n\nA dropped .ts is linked by path when the browser provides one; otherwise\nfiles up to 256 MB are embedded. A path or .m3u8 URL can also be pasted\ninto an empty node or into Properties. A .ts that is really TypeScript is\nrecognised by its content and left alone.\n\nTransport streams have no index, so one pass reads the PAT/PMT and\nrecords each keyframe's byte offset and PTS. It handles timestamp wrap,\nlost sync, and M2TS's 192-byte packets. Keyframe-aligned ~2 s byte ranges\nbecome a VOD playlist for hls.js, with buffers bounded on both sides of\nthe playhead. The server indexes linked files and serves Range reads,\npresenting M2TS as plain TS. Locally it indexed a 360 MB recording in\n0.1-0.15 s, and seeks deep into a 2-hour recording took 4-6 ms, each\nreading two ~43 KB ranges.\n\nUndecodable codecs are named in the player: MPEG-2 video up front, and\nanything MSE rejects from hls.js's error. Also keeps embedded streams off\nthe OS clipboard as images, as videos already were.",
    "objectFormat": "sha1",
    "parents": [
      "git:sha1:65b11bce3f97b6ce30c07bd722860fe23e71ffcc"
    ],
    "ref": "refs/heads/master",
    "summary": "Add stream player nodes for MPEG transport streams and HLS",
    "tree": "git:sha1:865e512f7d3d58b474a562be743c6d9e0a392b21",
    "type": "git"
  },
  "issuedAt": "2026-09-28T15:47:36.921Z",
  "previous": "mmm-revision:sha256:4cd38c3f09c654a60646fda10dbcacb1cb5734df5abcec04af2bf754340bbd4a",
  "project": "mmm1np06566gf6u8fpyj84u2emf25l98qad36700d2nlep6jzqdknp8qkyd3xu",
  "protocol": "mmm/0-alpha",
  "sequence": 256,
  "type": "mmm/revision"
}