Files
old-holivud2/app/models/mux_live_stream.rb
2020-05-31 22:38:19 +02:00

64 lines
1.7 KiB
Ruby

class MuxLiveStream
def id
live_stream.data.id
end
def key
live_stream.data.stream_key
end
def playback_id
playback.data.id
end
def destroy_stream(stream_uid)
client.delete_live_stream(stream_uid)
end
private
def live_stream
@live_stream ||= create_live_stream
end
def playback
@playback ||= create_playback
end
# Source: https://github.com/muxinc/mux-ruby/blob/1.4.0/examples/video/exercise-live-streams.rb
def create_live_stream
create_asset_request = MuxRuby::CreateAssetRequest.new
create_asset_request.playback_policy = [MuxRuby::PlaybackPolicy::PUBLIC]
create_asset_request.mp4_support = "standard"
create_live_stream_request = MuxRuby::CreateLiveStreamRequest.new
create_live_stream_request.new_asset_settings = create_asset_request
create_live_stream_request.playback_policy = [MuxRuby::PlaybackPolicy::PUBLIC]
create_live_stream_request.reduced_latency = reduced_latency_enabled?
create_live_stream_request.test = test_mode_enabled?
client.create_live_stream(create_live_stream_request)
end
def create_playback
create_playback_id_request = MuxRuby::CreatePlaybackIDRequest.new
# TODO: Use signed policy in the future
# create_playback_id_request.policy = MuxRuby::PlaybackPolicy::SIGNED
create_playback_id_request.policy = MuxRuby::PlaybackPolicy::PUBLIC
client.create_live_stream_playback_id(live_stream.data.id, create_playback_id_request)
end
def reduced_latency_enabled?
ENV["MUX_REDUCED_LATENCY_ENABLED"].present?
end
def test_mode_enabled?
!ENV["MUX_TEST_MODE_DISABLED"].present?
end
def client
@client ||= MuxRuby::LiveStreamsApi.new
end
end