github.com/muxinc/mux-go@v1.1.1/examples/video/live-streams/exercise-live-streams.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "os" 6 7 muxgo "github.com/muxinc/mux-go" 8 "github.com/muxinc/mux-go/examples/common" 9 ) 10 11 // Exercises all live stream operations: 12 // create-live-stream 13 // list-live-streams 14 // get-live-stream 15 // delete-live-stream 16 // create-live-stream-playback-id 17 // delete-live-stream-playback-id 18 // reset-stream-key 19 // signal-live-stream-complete 20 // create-live-stream-simulcast-target 21 // get-live-stream-simulcast-target 22 // delete-live-stream-simulcast-target 23 24 func main() { 25 26 // API Client Initialization 27 client := muxgo.NewAPIClient( 28 muxgo.NewConfiguration( 29 muxgo.WithBasicAuth(os.Getenv("MUX_TOKEN_ID"), os.Getenv("MUX_TOKEN_SECRET")), 30 )) 31 32 // ========== create-live-stream ========== 33 car := muxgo.CreateAssetRequest{PlaybackPolicy: []muxgo.PlaybackPolicy{muxgo.PUBLIC}} 34 csr := muxgo.CreateLiveStreamRequest{NewAssetSettings: car, PlaybackPolicy: []muxgo.PlaybackPolicy{muxgo.PUBLIC}} 35 s, err := client.LiveStreamsApi.CreateLiveStream(csr) 36 common.AssertNoError(err) 37 common.AssertNotNil(s.Data) 38 fmt.Println("create-live-stream OK ✅") 39 40 // ========== list-live-streams ========== 41 ss, err := client.LiveStreamsApi.ListLiveStreams() 42 common.AssertNoError(err) 43 common.AssertNotNil(ss.Data) 44 common.AssertStringEqualsValue(s.Data.Id, ss.Data[0].Id) 45 fmt.Println("list-live-streams OK ✅") 46 47 // ========== get-live-stream ========== 48 gs, err := client.LiveStreamsApi.GetLiveStream(s.Data.Id) 49 common.AssertNoError(err) 50 common.AssertNotNil(gs.Data) 51 common.AssertStringEqualsValue(s.Data.Id, gs.Data.Id) 52 fmt.Println("get-live-stream OK ✅") 53 54 // ========== get-asset-or-livestream-id ========= 55 playbackId := s.Data.PlaybackIds[0].Id 56 pbResp, err := client.PlaybackIDApi.GetAssetOrLivestreamId(playbackId) 57 common.AssertNoError(err) 58 common.AssertNotNil(pbResp.Data) 59 common.AssertStringEqualsValue(pbResp.Data.Object.Id, s.Data.Id) 60 common.AssertStringEqualsValue(pbResp.Data.Object.Type, "live_stream") 61 fmt.Println("get-asset-or-livestream-id OK ✅") 62 63 // ========== create-live-stream-simulcast-target ========== 64 cst := muxgo.CreateSimulcastTargetRequest{Passthrough: "foo", StreamKey: "bar", Url: "rtmp://this-is-a.test"} 65 nst, err := client.LiveStreamsApi.CreateLiveStreamSimulcastTarget(s.Data.Id, cst) 66 common.AssertNoError(err) 67 common.AssertNotNil(nst.Data) 68 fmt.Println("create-live-stream-simulcast-target OK ✅") 69 70 // ========== get-live-stream-simulcast-target ========== 71 st, err := client.LiveStreamsApi.GetLiveStreamSimulcastTarget(s.Data.Id, nst.Data.Id) 72 common.AssertNoError(err) 73 common.AssertNotNil(st.Data) 74 common.AssertStringEqualsValue(nst.Data.Id, st.Data.Id) 75 fmt.Println("get-live-stream-simulcast-target OK ✅") 76 77 // ========== delete-live-stream-simulcast-target ========== 78 err = client.LiveStreamsApi.DeleteLiveStreamSimulcastTarget(s.Data.Id, nst.Data.Id) 79 common.AssertNoError(err) 80 // Check it actually got deleted 81 snost, err := client.LiveStreamsApi.GetLiveStream(s.Data.Id) 82 common.AssertNoError(err) 83 common.AssertNotNil(snost.Data) 84 common.AssertNil(snost.Data.SimulcastTargets) 85 fmt.Println("delete-live-stream-simulcast-target OK ✅") 86 87 // ========== create-live-stream-playback-id ========== 88 cpbidr := muxgo.CreatePlaybackIdRequest{Policy: muxgo.SIGNED} 89 cpbids, err := client.LiveStreamsApi.CreateLiveStreamPlaybackId(s.Data.Id, cpbidr) 90 common.AssertNoError(err) 91 common.AssertNotNil(cpbids.Data) 92 common.AssertStringEqualsValue(string(cpbids.Data.Policy), "signed") 93 fmt.Println("create-live-stream-playback-id OK ✅") 94 95 // ========== delete-live-stream-playback-id ========== 96 err = client.LiveStreamsApi.DeleteLiveStreamPlaybackId(s.Data.Id, cpbids.Data.Id) 97 common.AssertNoError(err) 98 s1pbid, err := client.LiveStreamsApi.GetLiveStream(s.Data.Id) 99 common.AssertNoError(err) 100 common.AssertNotNil(s1pbid.Data) 101 common.AssertStringEqualsValue(string(s1pbid.Data.PlaybackIds[0].Policy), "public") 102 fmt.Println("delete-live-stream-playback-id OK ✅") 103 104 // ========== reset-stream-key ========== 105 sk, err := client.LiveStreamsApi.ResetStreamKey(s.Data.Id) 106 common.AssertNoError(err) 107 common.AssertNotNil(sk.Data) 108 if s.Data.StreamKey == sk.Data.StreamKey { 109 fmt.Println("Stream Key didn't change on stream key reset.") 110 os.Exit(255) 111 } 112 fmt.Println("reset-stream-key OK ✅") 113 114 // ========== signal-live-stream-complete ========== 115 _, err = client.LiveStreamsApi.SignalLiveStreamComplete(s.Data.Id) 116 common.AssertNoError(err) 117 fmt.Println("signal-live-stream-complete OK ✅") 118 119 120 // ========== disable-live-stream ========== 121 _, err = client.LiveStreamsApi.DisableLiveStream(s.Data.Id) 122 common.AssertNoError(err) 123 dls, err := client.LiveStreamsApi.GetLiveStream(s.Data.Id) 124 common.AssertStringEqualsValue(dls.Data.Status, "disabled") 125 fmt.Println("disable-live-stream OK ✅") 126 127 // ========== enable-live-stream ========== 128 _, err = client.LiveStreamsApi.EnableLiveStream(s.Data.Id) 129 common.AssertNoError(err) 130 els, err := client.LiveStreamsApi.GetLiveStream(s.Data.Id) 131 common.AssertStringEqualsValue(els.Data.Status, "idle") 132 fmt.Println("enable-live-stream OK ✅") 133 134 // ========== delete-live-stream ========== 135 err = client.LiveStreamsApi.DeleteLiveStream(s.Data.Id) 136 common.AssertNoError(err) 137 _, err = client.LiveStreamsApi.GetLiveStream(s.Data.Id) 138 common.AssertNotNil(err) 139 fmt.Println("delete-live-stream OK ✅") 140 141 }