Code Monkey home page Code Monkey logo

h264-converter's Introduction

H264 Converter

This library convert raw H.264 video streaming to fragmented mp4 for the Media Source Extensions of browser.

Install

npm install --save h264-converter

Usage

import VideoConverter from 'h264-converter';

// setup
const element = document.getElementById('videoTagId');
const converter = new VideoConverter(element, 30, 6);

// start streaming
fetch('/h264/raw/stream').then((res) => {
  if (res.body) {
    const reader = res.body.getReader();
    reader.read().then(function processResult(result) {
      function decode(value) {
        converter.appendRawData(value);
      }

      if (result.done) {
        decode([]);
        console.log('Video Stream is done.');
        return Promise.resolve();
      }
      decode(result.value);

      return reader.read().then(processResult);
    });
    converter.play();
    this.canceler = (message?: string) => {
      reader.cancel();
      console.log('Video Stream Request Canceled', message);
    };
  }
}).catch((err) => {
  console.error('Video Stream Request error', err);
});

API

class VideoConverter

constructor(videoElement: HTMLVideoElement, fps: number, fpf?: number)

  • videoElement: the video element for �display video streaming by Media Source Extensions API.
  • fps: frames per second of video stream.
  • fpf: frames per fragment of mp4.

appendRawData(data: ArrayLike<number>): void

append raw h264 data from streaming.

  • data: the received data from streaming.

play(): void

start to play the converted video.

pause(): void

pause the video.

reset(): void

reset inner state for changing stream.

debugging

setLogger(log: Logger, error?: Logger): void

set logger for output debugging log.

  • log: info logger, such as console.log.
  • error: error logger, such as console.error. default is same sa log value.

h264-converter's People

Contributors

horiuchi avatar

Watchers

 avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.