All Projects → jordicenzano → transport-stream-online-segmenter

jordicenzano / transport-stream-online-segmenter

Licence: GPL-3.0 license
Transport stream web based HLS segmenter.

Programming Languages

javascript
184084 projects - #8 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to transport-stream-online-segmenter

lhls-simple-live-platform
Very simple low latency live platform prototype
Stars: ✭ 57 (+90%)
Mutual labels:  hls, low-latency, lhls
Srs
SRS is a simple, high efficiency and realtime video server, supports RTMP, WebRTC, HLS, HTTP-FLV, SRT and GB28181.
Stars: ✭ 16,734 (+55680%)
Mutual labels:  hls, low-latency
Ffmpeg
Mirror of https://git.ffmpeg.org/ffmpeg.git
Stars: ✭ 27,382 (+91173.33%)
Mutual labels:  hls, mpeg
hls-ts-js
HLS MPEG-TS parser library in Javascript
Stars: ✭ 35 (+16.67%)
Mutual labels:  hls, mpeg
Go Ts Segmenter
Live TS segmenter and HLS manifest creation in Go
Stars: ✭ 42 (+40%)
Mutual labels:  hls, chunk
Hls Trimming Frame Accuracy
JS Code that given a group of HLS chunks, a start timestamp, and end timestamp it creates one MP4 that contains the original V/A frame accuracy trimmed and perfectly aligned
Stars: ✭ 46 (+53.33%)
Mutual labels:  hls, chunk
Abr Broadcaster
A real time encoder for Adaptive Bitrate Broadcast
Stars: ✭ 80 (+166.67%)
Mutual labels:  hls, low-latency
Jmuxer
jMuxer - a simple javascript mp4 muxer that works in both browser and node environment.
Stars: ✭ 222 (+640%)
Mutual labels:  hls, chunk
chunkflow
Compose chunk operators to create a pipeline for local or distributed petabyte-scale computation
Stars: ✭ 36 (+20%)
Mutual labels:  chunk
chunks tutorial
Small demo showing how to load and manage tilemap chunks on the fly with Phaser 3
Stars: ✭ 41 (+36.67%)
Mutual labels:  chunk
ZLMediaKit
WebRTC/RTSP/RTMP/HTTP/HLS/HTTP-FLV/WebSocket-FLV/HTTP-TS/HTTP-fMP4/WebSocket-TS/WebSocket-fMP4/GB28181/SRT server and client framework based on C++11
Stars: ✭ 7,790 (+25866.67%)
Mutual labels:  hls
roq-samples
How to use the Roq C++20 API for Live Cryptocurrency Algorithmic and High-Frequency Trading as well as for Back-Testing and Historical Simulation
Stars: ✭ 119 (+296.67%)
Mutual labels:  low-latency
ghichep-StreamingVideo
Ghi chép về Livestream sử dụng Opensource - Xây dựng một máy chủ Livestream theo cách đơn giản nhất - NGINX RTMP Dockerfile
Stars: ✭ 40 (+33.33%)
Mutual labels:  hls
node-rtmp-hls
NodeJS live stream server with HLS ABR support
Stars: ✭ 55 (+83.33%)
Mutual labels:  hls
hls-segment-reader
Node.js Readable for retrieving HLS segments.
Stars: ✭ 18 (-40%)
Mutual labels:  hls
SSffmpegVideoOperation
This is a library of FFmpeg for android... 📸 🎞 🚑
Stars: ✭ 261 (+770%)
Mutual labels:  mpeg
PandA-bambu
PandA-bambu public repository
Stars: ✭ 129 (+330%)
Mutual labels:  hls
hls-rip
Tool for ripping m3u8 playlists/segments.
Stars: ✭ 14 (-53.33%)
Mutual labels:  hls
MPSC Queue
A multi-producer single consumer queue C++ template suitable for async logging with SHM IPC support
Stars: ✭ 51 (+70%)
Mutual labels:  low-latency
cachegrand
cachegrand is an open-source fast, scalable and secure Key-Value store, also fully compatible with Redis protocol, designed from the ground up to take advantage of modern hardware vertical scalability, able to provide better performance and a larger cache at lower cost, without losing focus on distributed systems.
Stars: ✭ 87 (+190%)
Mutual labels:  low-latency

transport-stream-online-segmenter

This is a tool that allows you to create an HLS chunklist from any transport stream file. For the online version all the process is done inside the browser, so the input TS file are NOT uploaded anywhere making segmentation process fast and secure. Taking advantage of HLS v6 we can generate a byte range HLS chunklist that prevents you to modify / split your TS file.

You can also execute the same segmenter in the CLI (nodeJS), and then segment a live TS TCP stream or a local TS file, in this case the chunks can be generated and saved to the local disc. If you segment a TS TCP stream you can activate LHLS segementation (see: lhls-media-streaming). See note 1 if you want to test LHLS.

Usage in the browser

  • Click here online-segmenter
  • Select the desired target duration and select a .ts file from your local computer (see note 2 to generate a file), or put a URL of any ts file (remember should have a proper CORS policy)
  • The .ts file will be processed in YOUR browser and the resulting HLS v6 chunklist displayed

Testing the results:

  • Copy the resulting chunklist data in a file in the same directory where your .ts file is, for example chunklist.m3u8
  • Use any HLS player to play the resulting manifest file chunklist.m3u8. For instance: VLC or Safari
  • (optional) is more "fun" if you put a webserver in front of those files. For instance node-static

Usage in the console to process files

  • Use the following syntax (see note 3 on how to generate a TS stream):
./transport-stream-segmenter-cli.js /your_path/input.ts /your_path/chunklist.m3u8

You can execute ./transport-stream-segmenter-cli.js (without arguments) to get help about accepted parameters

Usage in the console to process TCP streams (live)

It provides a server TCP socket to ingest a TS TCP stream, and it generates a live EVENT or WINDOW chunklist, it also saves the chunk files indicating them as growing files, useful if you want to implement LHLS or reduce latency using chunked transfer. See Note 2 if you want to test it.

  • Use the following syntax, see note 2 for testing:
./transport-stream-segmenter-tcp.js 9000 /tmp media_ out.m3u8 4 127.0.0.1 event

You can execute ./transport-stream-segmenter-tcp.js (without arguments) to get help about accepted parameters

Notes

Note 1: testing LHLS

For LHLS you need a webserver that supports chunked transfer for growing files, see: webserver-chunked-growingfiles

Note 2: Generating a TS file

If you do not have any ts file you can generate one by using ffmpeg:

ffmpeg -f lavfi -re -i testsrc=duration=10:size=320x200:rate=30 \
-f lavfi -re -i sine=frequency=1000:duration=10:sample_rate=44100 \
-pix_fmt yuv420p -c:v libx264 -b:v 1000k -g 30 -x264opts "keyint=120:min-keyint=120:no-scenecut" -profile:v baseline -preset veryfast \
-c:a libfdk_aac -b:a 96k \
-f mpegts demo.ts

Note 3: Generation a TS stream

Note 2: If you do not have any encoder able to generate a TS TCP stream, you can execute the following script included in this repo (it uses ffmpeg behind the scenes):

./test/scripts/videoTestToLiveTSTSCP.sh 1000 120 9000 127.0.0.1
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].