Files
monibuca/plugin/test/read _task.go
2025-09-26 15:57:26 +08:00

64 lines
1.5 KiB
Go

package plugin_test
import (
"fmt"
task "github.com/langhuihui/gotask"
"m7s.live/v5"
"m7s.live/v5/pkg/config"
flv "m7s.live/v5/plugin/flv/pkg"
hls "m7s.live/v5/plugin/hls/pkg"
mp4 "m7s.live/v5/plugin/mp4/pkg"
rtmp "m7s.live/v5/plugin/rtmp/pkg"
rtsp "m7s.live/v5/plugin/rtsp/pkg"
srt "m7s.live/v5/plugin/srt/pkg"
webrtc "m7s.live/v5/plugin/webrtc/pkg"
)
func init() {
testTaskFactory.Register("read", func(s *TestCase, conf TestTaskConfig) task.ITask {
return &ReadRemoteTask{TestBaseTask: TestBaseTask{testCase: s, TestTaskConfig: conf}}
})
}
type ReadRemoteTask struct {
TestBaseTask
}
func (mt *ReadRemoteTask) Start() error {
var conf config.Pull
conf.URL = mt.Input
streamPath := mt.StreamPath
var puller m7s.IPuller
switch mt.Format {
case "mp4":
if conf.URL == "" {
conf.URL = "test.mp4"
}
puller = mp4.NewPuller(conf)
case "flv":
if conf.URL == "" {
conf.URL = "test.flv"
}
puller = flv.NewPuller(conf)
case "annexb":
conf.URL = fmt.Sprintf("http://%s:8080/annexb/%s", mt.ServerAddr, mt.Input)
puller = m7s.NewAnnexBPuller(conf)
case "rtmp":
puller = rtmp.NewPuller(conf)
case "rtsp":
puller = rtsp.NewPuller(conf)
case "srt":
puller = srt.NewPuller(conf)
case "hls":
puller = hls.NewPuller(conf)
case "webrtc":
conf.URL = fmt.Sprintf("http://%s:8080/webrtc/play/%s", mt.ServerAddr, mt.Input)
puller = webrtc.NewPuller(conf)
}
pulljob := puller.GetPullJob().Init(puller, &mt.testCase.Plugin.Plugin, streamPath, conf, nil)
mt.Using(pulljob)
pulljob.Using(mt)
return nil
}