Skip to content

Instantly share code, notes, and snippets.

@perigee
Last active April 11, 2022 18:02
Show Gist options
  • Save perigee/a464e25e683672bc5e65 to your computer and use it in GitHub Desktop.
Save perigee/a464e25e683672bc5e65 to your computer and use it in GitHub Desktop.
Streaming related subjects

Fundamental Information

Protocols and formats

A brief description of streaming protocols and formats here

Fantastic blog for video streaming

Fabio Sonnat maintains a great blog about video streaming and gave a comprehensive serie about FFmpeg

Another source for streaming here

A good answer for streaming

Stackexchange has a good answer on streaming with hls

Nginx-rtmp Setup for rtsp -> hls live streaming

stackoverflow answer

via HTTP

HLS

  1. Comprehensive description of HLS

Mozilla projects

Streaming soluctions

Several popular technologies in the field:

Built on MJPG-Streamer,
JSMPEG
MPEG-DASH
  1. low delay
  2. nginx-rtmp approach MPEG-DASH
  3. An universities' DASH-JS implementation with ffmpeg
Webm through websocket

http://stackoverflow.com/questions/16465305/video-stream-through-websocket-to-video-tag

Mpeg through websocket to canvas element

This is the tutorial about mpeg to canvas element via websocket

Icecast

Official site

GStreamer (raw h264)

GStreamer with plugins bad (uvch264src) tutorial and here

Essential knowledge background about GStreamer

crtmp server
  1. tutorial for setup with h264 brief introduction
  2. streaming HLS

mjpg streamer

  1. This tutorial about mjpg-streamer installation is really comprehensive

  2. The Motion is a software to detect the motion in video.

  3. libjpeg site

     > sudo apt-get libjpeg8-dev imagemagick libv4l-dev
     > svn co svn://svn.code.sf.net/p/mjpg-streamer/code/ mjpg-streamer
     > sudo ln -s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h # link v4l2
     > make USE_LIBV4L2=true 
     > ./mjpg_streamer -i "input_uvc.so -d /dev/video0 -y -r 80x60 -f 15" -o 'output_http.so -p 8080 -w /home/ubuntu/software/nginx/html'

Alternatives

Hawkeye

A mjpeg-streamer alternative: Hawkeye

Live_thumb

Live Thumb

MJPG JS

Paparazzo

RTSP to WebRTC

The rtsp -> webRTC gateway -> browser here

OpenWRT

Route + usb webcam = ip camera

There is a youtube which explains the setup.

Oauth

A ting implementation of oauth server by Flask

The tutorial described the step by step of oauth server setup.

Python Web setup solutions

Gunicorn

Blogs

Client side libraries

Media Element JS for browser

Since Google dropped native h264 codec support on chrome for PC, the

Media element JS

Videogular: video for AngularJS

This js library may be less problematic with AngularJS

Video js (may have conflict with AngularJS)

The plugin for HLS can be found here

FFMPEG

  1. record the live streaming by ffmpeg

Media libraries for different languages

FFmpeg for erlang

A erlang wrapper of ffmpeg

Solutions

  1. C and Python solution for rtmp streaming
  2. Python and epoll
  3. Python gevent implementation of socket.io gevent.socketio

Issue with Dash.js

  1. time request 0 bug
  2. loop issue, the video will be played in loop even with the patch 1 suggested.

References

  1. MP4 to socket here
  2. Orange opensource dash.js based hasplayer
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment