Giter Club home page Giter Club logo

go-oryx-lib's Introduction

go-oryx-lib

Build Status codecov

This library is exported by server go-oryx.

Requires

GO1.4+

Packages

The library provides packages about network and multiple media processing:

  • logger: Connection-Oriented logger for application server.
  • json: Json+ supports c and c++ style comments.
  • options: Frequently used service options with config file.
  • http: For http response with error, jsonp and std reponse.
  • asprocess: The associate-process, for SRS/BMS to work with external process.
  • kxps: The k-some-ps, for example, kbps, krps.
  • https: For https server over lego/acme of letsencrypt.
  • gmoryx: A gomobile API for go-oryx-lib.
  • flv: The FLV muxer and demuxer, for oryx.
  • errors: Fork from pkg/errors, a complex error with message and stack, read article.
  • aac: The AAC utilities to demux and mux AAC RAW data, for oryx.
  • websocket: Fork from websocket.
  • rtmp: The RTMP protocol stack, for oryx.
  • avc: The AVC utilities to demux and mux AVC RAW data, for oryx.
  • sip: A sip RFC3261 library for WebRTC signaling.
  • turn: A turn RFC5766 library for WebRTC and SFU.

Remark: For library, please never use logger, use errors instead.

Other multiple media libraries in golang:

License

This library just depends on golang standard library, we do this by copying the code of other libraries, while all the licenses are liberal:

  1. go-oryx-lib uses MIT License.
  2. pkg/errors uses BSD 2-clause "Simplified" License.
  3. acme uses MIT License.
  4. jose uses Apache License 2.0.
  5. letsencrypt uses BSD 3-clause "New" or "Revised" License.
  6. websocket uses BSD 2-clause "Simplified" License.

Winlin 2016

go-oryx-lib's People

Contributors

urey-hiker avatar winlinvip avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

go-oryx-lib's Issues

support QUIC protocol for real time Peer to peer

QUIC the protocol google chrome, youtube and google hangouts uses for streaming.

Here is a good write up of it.
https://bloggeek.me/quic-webrtc/

Its uses UDP with a congestion control, and its basically replaces the old SCTP

there is a 100% golang lib here:
https://github.com/lucas-clemente/quic-go

Its very easy to use and requires https / h2.

Also this is a good description of it too.
https://www.callstats.io/2017/02/03/web-protocols-http2-quic/

AAC validation fails for 96kHz sample rate

The error is: 'invalid sample-rate 0x0' when v.SampleRate == 0 (SampleRateIndex96kHz)

Seems the problem is here:

if v.SampleRate < SampleRateIndex88kHz || v.SampleRate > SampleRateIndex7kHz {
    return errors.Errorf("invalid sample-rate %#x", uint8(v.SampleRate))
}

This condition does not include 'SampleRateIndex96kHz', is there any reason for this?
Seems 96kHz should be a valid sample rate and pass the validation.

Thank you!

Support Printf(ctx,format,...) logger

	// Use short aliases.
	ol.I(nil, "The log text.")
	ol.T(nil, "The log text.")
	ol.W(nil, "The log text.")
	ol.E(nil, "The log text.")

	// Use printf style log.
	ol.If(nil, "The log %v", "text")
	ol.Tf(nil, "The log %v", "text")
	ol.Wf(nil, "The log %v", "text")
	ol.Ef(nil, "The log %v", "text")

readMessagePayload may return (nil, nil)

	// Got entire RTMP message?
	if int(chunk.message.payloadLength) == len(chunk.message.Payload) {
		m = chunk.message
		chunk.message = nil
	}

	return

When we did not got the entire RTMP message, readMessagePayload will return (nil, nil).
which cause onMessageArrivated got a nil message.

		if m, err = v.readMessagePayload(chunk); err != nil {
			return
		}

		if err = v.onMessageArrivated(m); err != nil {
			return
		}

May I create a new error variable? var errTryAgain = errors.New("Try again")

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.