streamsurfer

command module
v0.0.0-...-da3ff43 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 18, 2015 License: GPL-3.0 Imports: 31 Imported by: 0

README

As I moved away from videostreaming development I not more interested in this project. So I leave code as is in unfinished state. I'll continue to maintain m3u8 library as it is used in some other projects.

Stream Surfer

Current state: code broken. Don't use!

Stream Surfer — probe utiliy for HTTP video streaming. The utility detects errors in HTTP Streams (Apple HLS now supported) and monitor health of any HTTP resources. It may be used as regular monitoring tool and stress testing for mediaservers (and any HTTP-servers too).

Features are:

  • parse M3U8-playlists (master and single-bitrate playlists)
  • detect bad playlists format (empty playlists, incorrect chunk durations)
  • check HTTP response statuses
  • collects response time statistics
  • webreports to represent collected statistics
  • integration with Zabbix (http://zabbix.com) monitoring software

Planned features:

  • probe more formats beside HLS (planned HDS, DASH, Widevine VOD)
  • probe chunks with mediainfo utility (from ffmpeg)
  • REST HTTP to represent collected data and utility control
  • aggregate and analyze statistics from other streamsurfer nodes
  • visualize monitoring information in Web UI
  • persistent storage for statistics and reports generation

This software can't be used for HLS playback.

streamsurfer is an furfer development of Python hlsprobe (https://github.com/grafov/hlsprobe).

Install

You need Go language (http://golang.org) environment installed. Then:

go get github.com/grafov/bcast
go get github.com/grafov/m3u8
go get github.com/gorilla/mux
git clone https://github.com/grafov/streamsurfer
cd streamsurfer
sudo make install

The code includes Bootstrap 2 (http://getbootstrap.com) library (under Apache License). It may be packaged with streamsurfer due GPLv3 license. To simplify installation Bootstrap code yet included in streamsurfer package. Later it will be splitted and Bootstrap will be downloaded separately.

Usage

Setup configuration file (copy one of templates from package) and start utility:

streamsurfer --config=config.yml

All stream problems logged to error log (error-log parameter in the config params section). Web reports available at localhost:8088 (define listener with http-api-listen).

Similar projects

Build status

Build Status

Documentation

Overview

Load configuration file.

misc helpers

HTTP API to control probe service for representing collected data.

HTTP client with timeouts. Client from standard library lacks support of timeouts then we use this one. Code taken from https://gist.github.com/dmichael/5710968 and also explained here http://stackoverflow.com/questions/16895294/how-to-set-timeout-for-http-get-requests-in-golang

Everything logging

Probers for dif

Stream parsers and keepers.

OBSOLETED by webui-report.go Web reports generator

Load configuration file.

The code keeps streams statistics and program internal statistics. Statistics output to files and to JSON HTTP API.

OBSOLETED by templates/*.tmpl Templates for webui

Web UI. Reports generator

Integration with Zabbix monitoring tool

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL