/go-oryx

The go-oryx is SRS++, focus on real-time live streaming cluster.

Primary LanguageGoMIT LicenseMIT

go-oryx

GoDoc [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ossrs/go-oryx?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)

The go-oryx is SRS++, focus on real-time live streaming cluster.

Usage

For linux/unix-like os:

go get github.com/ossrs/go-oryx &&
cd $GOPATH/src/github.com/ossrs/go-oryx &&
$GOPATH/bin/go-oryx -c conf/oryx.json

Or, for windows:

go get github.com/ossrs/go-oryx &&
cd %GOPATH%\src\github.com\ossrs\go-oryx &&
%GOPATH%\bin\go-oryx.exe -c conf\oryx.json

About how to build and run at current directory:

cd $GOPATH/src/github.com/ossrs/go-oryx &&
go build . && ./go-oryx -c conf/oryx.json

About how to set $GOPATH, read prepare go.

IDE

GO SDK: download

JetBrains IntelliJ IDEA: download

IntelliJ IDEA Golang Plugin: repository, download

SRS vs go-oryx

Why rewrite the SRS to go-oryx:

  1. Coroutine Or Goroutine: SRS base on ST, it’s more important than c/c++ language for streaming server; while golang support goroutine, which is actually what ST do.
  2. Multiple Processes: SRS is single process. It’s too weak for modern server with 16 or 64 CPUs and 2 or 4 10Gbps network. Multiple cpus and network interfaces requires multiple processes server.
  3. New Arch: New arch for HTTP/RTMP/FLV/HLS/RTSP or other protocol, it’s better to support many protocol especially private protocol, which will provides realtime streaming.

Features

  1. v0.1.0 Supports Multiple Processes.
  2. v0.1.0 Supports Linux, Unix-like and Windows.
  3. v0.1.1 Supports JSON style config file.
  4. v0.1.2 #41 Supports Reload config file.
  5. v0.1.3 Standard godoc, gofmt, gotest and TravisCI.
  6. v0.1.4 Support daemon over ossrs/go-daemon(fork from sevlyar/go-daemon).
  7. v0.1.5 Extend JSON with c++ style comments.
  8. v0.1.6 Support heartbeat to report for ARM.
  9. v0.1.7 Use agent(source+channel+sink) to build complex stream river.
  10. v0.1.8 #37 Supports Publish and Play VP6 RTMP stream.
  11. v0.1.9 Supports Delivery VP6/H.264 and Speex/AAC/MP3/Nellymoser codec.
  12. v0.1.10 Supports 10k(8CPUs) for RTMP players.
  13. v0.1.11 Supports 10k(4CPUs) for RTMP players.
  14. v0.1.12 Supports 10k(3CPUs) for RTMP players.
  15. v0.1.13 Supports 10k(2CPUs) for RTMP players.
  16. v0.1.14 Supports SRS style config file.
  17. v0.1.15 Supports LOG+, the connection-based tracable log.
  18. v0.1.16 Supports debug rtmp recv by config debug.rtmp_dump_recv.
  19. v0.1.17 Supports force to realtime mode by config vhost.min_latency.
  20. [dev] Supports gop-cache and drop frame strategy.
  21. [plan] #45 HLS: Support audio only HLS stream.
  22. [plan] #44 DASH: Support remux stream to MPEG-DASH
  23. [plan] #43 RTSP: Support push RTSP to server.
  24. [plan] #42 UDP: Support push MPEG-TS over UDP to server.
  25. [plan] #40 HDS: Support remux stream to HDS.
  26. [plan] #39 API: Support HTTP callbacks
  27. [plan] #38 API: Support HTTP API for client to access.
  28. [plan] #36 FLV: Remux stream to HTTP-FLV streaming.
  29. [plan] #35 HLS: Support HLS+ Edge Cluster.
  30. [plan] #24 RTMP: Support standard uri like http.
  31. [plan] #46 Codec: Support encode the audio and video device to stream.
  32. [plan] #47 System: Support copy stream to another vhost.

Winlin 2015.10