mirror of
https://github.com/LuanRT/googlevideo.git
synced 2026-06-13 08:42:31 +00:00
fbef7bd4171737366a31ecf94b9302970c58ca1f
What Is This?
This is a collection of utilities for working with Google Video APIs, with a primary focus on UMP.
- Video Streaming Protos
- UMP (Parser)
- ServerAbrStream (SABR Client)
- ChunkedDataBuffer (Buffer Manager)
You can find usage examples here.
Installation
npm install github:LuanRT/googlevideo
Basic Usage
import GoogleVideo, { PART, Protos } from 'googlevideo';
const streamingUrl = 'https://abcd--a.googlevideo.com/videoplayback?...';
const response = await fetch(streamingUrl, { method: 'POST' });
const arrayBuffer = await response.arrayBuffer();
const dataBuffer = new GoogleVideo.ChunkedDataBuffer();
dataBuffer.append(new Uint8Array(arrayBuffer));
const googUmp = new GoogleVideo.UMP(dataBuffer);
googUmp.parse((part) => {
switch (part.type) {
case PART.MEDIA_HEADER: {
console.log('[MediaHeader]:', Protos.MediaHeader.decode(part.data.chunks[0]));
break;
}
case PART.MEDIA: {
const headerId = part.data.getUint8(0);
const streamData = part.data.split(1).remainingBuffer;
console.log('[Media]:', `Header ID: ${headerId}`, `length: ${streamData.getLength()}`);
break;
}
case PART.MEDIA_END: {
const headerId = part.data.getUint8(0);
console.log('[MediaEnd]:', `Header ID: ${headerId}`);
break;
}
default:
console.log('Unhandled part:', part.type);
break;
}
});
For more advanced examples, including scenarios beyond just parsing responses, check out the examples.
License
Distributed under the MIT License.
Languages
TypeScript
96.6%
JavaScript
3.4%