producer.go 927 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package ivideon
  2. import (
  3. "encoding/json"
  4. "github.com/AlexxIT/go2rtc/pkg/core"
  5. )
  6. func (c *Client) GetMedias() []*core.Media {
  7. return c.medias
  8. }
  9. func (c *Client) GetTrack(media *core.Media, codec *core.Codec) (*core.Receiver, error) {
  10. if c.receiver != nil {
  11. return c.receiver, nil
  12. }
  13. return nil, core.ErrCantGetTrack
  14. }
  15. func (c *Client) Start() error {
  16. err := c.Handle()
  17. if c.buffer == nil {
  18. return nil
  19. }
  20. return err
  21. }
  22. func (c *Client) Stop() error {
  23. if c.receiver != nil {
  24. c.receiver.Close()
  25. }
  26. return c.Close()
  27. }
  28. func (c *Client) MarshalJSON() ([]byte, error) {
  29. info := &core.Connection{
  30. ID: core.ID(c),
  31. FormatName: "ivideon",
  32. Protocol: "ws",
  33. URL: c.ID,
  34. Medias: c.medias,
  35. Recv: c.recv,
  36. }
  37. if c.conn != nil {
  38. info.RemoteAddr = c.conn.RemoteAddr().String()
  39. }
  40. if c.receiver != nil {
  41. info.Receivers = []*core.Receiver{c.receiver}
  42. }
  43. return json.Marshal(info)
  44. }