NextGB, web demo powerd by vue
This commit is contained in:
59
pkg/media/zlm.go
Normal file
59
pkg/media/zlm.go
Normal file
@ -0,0 +1,59 @@
|
||||
package media
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/ossrs/go-oryx-lib/errors"
|
||||
)
|
||||
|
||||
type Zlm struct {
|
||||
Ctx context.Context
|
||||
Schema string // The schema of ZLM, eg: http
|
||||
Addr string // The address of ZLM, eg: localhost:8085
|
||||
Secret string // The secret of ZLM, eg: ZLMediaKit_secret
|
||||
}
|
||||
|
||||
// /index/api/openRtpServer
|
||||
// secret={{ZLMediaKit_secret}}&port=0&enable_tcp=1&stream_id=test2
|
||||
func (z *Zlm) Publish(id, ssrc string) (int, error) {
|
||||
|
||||
res := struct {
|
||||
Code int `json:"code"`
|
||||
Port int `json:"port"`
|
||||
}{}
|
||||
|
||||
if err := apiRequest(z.Ctx, z.Schema+"://"+z.Addr+"/index/api/openRtpServer?secret="+z.Secret+"&port=0&enable_tcp=1&stream_id="+id+"&ssrc="+ssrc, nil, &res); err != nil {
|
||||
return 0, errors.Wrapf(err, "gb/v1/publish")
|
||||
}
|
||||
return res.Port, nil
|
||||
}
|
||||
|
||||
// /index/api/closeRtpServer
|
||||
func (z *Zlm) Unpublish(id string) error {
|
||||
res := struct {
|
||||
Code int `json:"code"`
|
||||
}{}
|
||||
if err := apiRequest(z.Ctx, z.Schema+"://"+z.Addr+"/index/api/closeRtpServer?secret="+z.Secret+"&stream_id="+id, nil, &res); err != nil {
|
||||
return errors.Wrapf(err, "gb/v1/publish")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// /index/api/getMediaList
|
||||
func (z *Zlm) GetStreamStatus(id string) (bool, error) {
|
||||
res := struct {
|
||||
Code int `json:"code"`
|
||||
}{}
|
||||
if err := apiRequest(z.Ctx, z.Schema+"://"+z.Addr+"/index/api/getMediaList?secret="+z.Secret+"&stream_id="+id, nil, &res); err != nil {
|
||||
return false, errors.Wrapf(err, "gb/v1/publish")
|
||||
}
|
||||
return res.Code == 0, nil
|
||||
}
|
||||
|
||||
func (z *Zlm) GetAddr() string {
|
||||
return z.Addr
|
||||
}
|
||||
|
||||
func (z *Zlm) GetWebRTCAddr(id string) string {
|
||||
return "http://" + z.Addr + "/index/api/webrtc?app=rtp&stream=" + id + "&type=play"
|
||||
}
|
||||
Reference in New Issue
Block a user