Documentation ¶
Index ¶
- Constants
- Variables
- func FileExist(path string) bool
- func GetArgs(args ...string) (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10 string)
- func GetError(err *room.Error) error
- func RandomKey(n int) string
- type Call
- type Connector
- type ConnectorConfig
- type JoinConfig
- type JoinInfo
- type MediaType
- type PeerInfo
- type PeerState
- type Peer_Direction
- type Protocol
- type RTC
- func (r *RTC) Close()
- func (r *RTC) Connect()
- func (r *RTC) Connected() bool
- func (r *RTC) CreateDataChannel(label string) (*webrtc.DataChannel, error)
- func (r *RTC) GetBandWidth(cycle int) (int, int)
- func (r *RTC) GetPubStats() webrtc.StatsReport
- func (r *RTC) GetPubTransport() *Transport
- func (r *RTC) GetSubStats() webrtc.StatsReport
- func (r *RTC) GetSubTransport() *Transport
- func (r *RTC) Join(sid, uid string, config ...*JoinConfig) error
- func (r *RTC) Name() string
- func (r *RTC) Publish(tracks ...webrtc.TrackLocal) ([]*webrtc.RTPTransceiver, error)
- func (r *RTC) PublishFile(file string, video, audio bool) error
- func (r *RTC) SendAnswer(sdp webrtc.SessionDescription) error
- func (r *RTC) SendJoin(sid string, uid string, offer webrtc.SessionDescription, ...) error
- func (r *RTC) SendOffer(sdp webrtc.SessionDescription) error
- func (r *RTC) SendTrickle(candidate *webrtc.ICECandidate, target Target)
- func (r *RTC) Subscribe(trackInfos []*Subscription) error
- func (r *RTC) SubscribeFromEvent(event TrackEvent, audio, video bool, layer string) error
- func (r *RTC) UnPublish(transceivers ...*webrtc.RTPTransceiver) error
- type RTCConfig
- type Role
- type Room
- func (r *Room) AddPeer(peer PeerInfo) error
- func (c *Room) Close()
- func (c *Room) Connect()
- func (c *Room) Connected() bool
- func (r *Room) CreateRoom(info RoomInfo) error
- func (r *Room) EndRoom(sid, reason string, delete bool) error
- func (r *Room) GetPeers(sid string) []PeerInfo
- func (c *Room) Join(j JoinInfo) error
- func (c *Room) Leave(sid, uid string) error
- func (c *Room) Name() string
- func (r *Room) RemovePeer(sid, uid string) error
- func (c *Room) SendMessage(sid, from, to string, data map[string]interface{}) error
- func (r *Room) UpdatePeer(peer PeerInfo) error
- func (r *Room) UpdateRoom(info RoomInfo) error
- type RoomInfo
- type Service
- type ServiceEvent
- type Subscription
- type Target
- type TrackEvent
- type TrackEvent_State
- type TrackInfo
- type Transport
- type WebMProducer
- func (t *WebMProducer) GetAudioTrack() (*webrtc.TrackLocalStaticSample, error)
- func (t *WebMProducer) GetSendBandwidth(cycle int) int
- func (t *WebMProducer) GetVideoTrack() (*webrtc.TrackLocalStaticSample, error)
- func (t *WebMProducer) Pause(pause bool)
- func (t *WebMProducer) SeekP(ts int)
- func (t *WebMProducer) Start()
- func (t *WebMProducer) Stop()
- type WebRTCTransportConfig
Constants ¶
const ( MimeTypeH264 = "video/h264" MimeTypeOpus = "audio/opus" MimeTypeVP8 = "video/vp8" MimeTypeVP9 = "video/vp9" )
const (
API_CHANNEL = "ion-sfu"
)
Variables ¶
var ( DefaultConfig = RTCConfig{ WebRTC: WebRTCTransportConfig{ Configuration: webrtc.Configuration{ ICEServers: []webrtc.ICEServer{ { URLs: []string{"stun:stun.stunprotocol.org:3478", "stun:stun.l.google.com:19302"}, }, }, }, }, } )
Functions ¶
Types ¶
type Call ¶
type Call struct { StreamID string `json:"streamId"` Video string `json:"video"` Audio bool `json:"audio"` }
Call dc api
type Connector ¶
type Connector struct { Metadata metadata.MD OnOpen func(Service) OnClose func(Service, ServiceEvent) // contains filtered or unexported fields }
func NewConnector ¶
func NewConnector(addr string, config ...ConnectorConfig) *Connector
NewConnector create a ion connector
func (*Connector) RegisterService ¶
type ConnectorConfig ¶
type JoinConfig ¶
func NewJoinConfig ¶
func NewJoinConfig() *JoinConfig
func SetRelay ¶
func SetRelay(j JoinConfig) *JoinConfig
func (JoinConfig) SetNoAutoSubscribe ¶
func (j JoinConfig) SetNoAutoSubscribe() *JoinConfig
func (JoinConfig) SetNoPublish ¶
func (j JoinConfig) SetNoPublish() *JoinConfig
func (JoinConfig) SetNoSubscribe ¶
func (j JoinConfig) SetNoSubscribe() *JoinConfig
type Peer_Direction ¶
type Peer_Direction int32
const ( Peer_INCOMING Peer_Direction = 0 Peer_OUTGOING Peer_Direction = 1 Peer_BILATERAL Peer_Direction = 2 )
type RTC ¶
type RTC struct { Service //export to user OnTrack func(track *webrtc.TrackRemote, receiver *webrtc.RTPReceiver) OnDataChannel func(*webrtc.DataChannel) OnError func(error) OnTrackEvent func(event TrackEvent) OnSpeaker func(event []string) sync.Mutex // contains filtered or unexported fields }
Client a sdk client
func (*RTC) CreateDataChannel ¶
CreateDataChannel create a custom datachannel
func (*RTC) GetBandWidth ¶
GetBandWidth call this api cyclely
func (*RTC) GetPubTransport ¶
func (*RTC) GetSubTransport ¶
func (*RTC) Join ¶
func (r *RTC) Join(sid, uid string, config ...*JoinConfig) error
Join client join a session
func (*RTC) PublishFile ¶
PublishWebm publish a webm producer
func (*RTC) SendAnswer ¶
func (*RTC) SendTrickle ¶
func (*RTC) Subscribe ¶
func (r *RTC) Subscribe(trackInfos []*Subscription) error
Subscribe to tracks
func (*RTC) SubscribeFromEvent ¶
func (r *RTC) SubscribeFromEvent(event TrackEvent, audio, video bool, layer string) error
SubscribeFromEvent will parse event and subscribe what you want
type RTCConfig ¶
type RTCConfig struct {
WebRTC WebRTCTransportConfig `mapstructure:"webrtc"`
}
type Room ¶
type Room struct { Service sync.Mutex OnJoin func(success bool, info RoomInfo, err error) OnLeave func(success bool, err error) OnPeerEvent func(state PeerState, Peer PeerInfo) OnMessage func(from string, to string, data map[string]interface{}) OnDisconnect func(sid, reason string) OnRoomInfo func(info RoomInfo) OnError func(error) // contains filtered or unexported fields }
func (*Room) CreateRoom ¶
CreateRoom Params: sid password, at lease a sid
func (*Room) RemovePeer ¶
func (*Room) SendMessage ¶
SendMessage send message from is a uid to is a uid or "all"
func (*Room) UpdatePeer ¶
func (*Room) UpdateRoom ¶
type ServiceEvent ¶
type Subscription ¶
type TrackEvent ¶
type TrackEvent struct { State TrackEvent_State Uid string Tracks []*TrackInfo }
TrackEvent info
type TrackEvent_State ¶
type TrackEvent_State int32
const ( TrackEvent_ADD TrackEvent_State = 0 TrackEvent_UPDATE TrackEvent_State = 1 TrackEvent_REMOVE TrackEvent_State = 2 )
type Transport ¶
type Transport struct { SendCandidates []*webrtc.ICECandidate RecvCandidates []webrtc.ICECandidateInit // contains filtered or unexported fields }
Transport is pub/sub transport
func NewTransport ¶
NewTransport create a transport
func (*Transport) GetPeerConnection ¶
func (t *Transport) GetPeerConnection() *webrtc.PeerConnection
type WebMProducer ¶
type WebMProducer struct {
// contains filtered or unexported fields
}
WebMProducer support streaming by webm which encode with vp8 and opus
func NewWebMProducer ¶
func NewWebMProducer(name string, offset int) *WebMProducer
NewWebMProducer new a WebMProducer
func (*WebMProducer) GetAudioTrack ¶
func (t *WebMProducer) GetAudioTrack() (*webrtc.TrackLocalStaticSample, error)
GetAudioTrack get audio track
func (*WebMProducer) GetSendBandwidth ¶
func (t *WebMProducer) GetSendBandwidth(cycle int) int
GetSendBandwidth calc the sending bandwidth with cycle(s)
func (*WebMProducer) GetVideoTrack ¶
func (t *WebMProducer) GetVideoTrack() (*webrtc.TrackLocalStaticSample, error)
GetVideoTrack get video track
func (*WebMProducer) Pause ¶
func (t *WebMProducer) Pause(pause bool)
func (*WebMProducer) SeekP ¶
func (t *WebMProducer) SeekP(ts int)
func (*WebMProducer) Start ¶
func (t *WebMProducer) Start()
func (*WebMProducer) Stop ¶
func (t *WebMProducer) Stop()
type WebRTCTransportConfig ¶
type WebRTCTransportConfig struct { VideoMime string Configuration webrtc.Configuration Setting webrtc.SettingEngine }
WebRTCTransportConfig represents configuration options
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
example
|
|
pkg
|
|
gstreamer-sink
Package gst provides an easy API to create an appsrc pipeline
|
Package gst provides an easy API to create an appsrc pipeline |
gstreamer-src
Package gst provides an easy API to create an appsink pipeline
|
Package gst provides an easy API to create an appsink pipeline |