class Pili::Stream

Attributes

created_at[R]
credentials[R]
disabled[RW]
hosts[R]
hub[R]
id[R]
profiles[R]
publish_key[RW]
publish_security[RW]
title[R]
updated_at[R]

Public Class Methods

new(credentials, options = {}) click to toggle source
# File lib/pili/stream.rb, line 9
def initialize(credentials, options = {})
  @credentials      = credentials
  @id               = options["id"]
  @title            = options["title"]
  @hub              = options["hub"]
  @profiles         = options["profiles"] || []
  @publish_key      = options["publishKey"]
  @publish_security = options["publishSecurity"]
  @disabled         = options["disabled"]
  @hosts            = options["hosts"]

  @created_at       = options["createdAt"]
  @updated_at       = options["updatedAt"]
end

Public Instance Methods

delete() click to toggle source
# File lib/pili/stream.rb, line 45
def delete
  API.delete_stream(@credentials, @id)
end
disable() click to toggle source
# File lib/pili/stream.rb, line 40
def disable
  API.update_stream(@credentials, @id, disabled: true)
end
enable() click to toggle source
# File lib/pili/stream.rb, line 35
def enable
  API.update_stream(@credentials, @id, disabled: false)
end
hls_live_urls() click to toggle source
# File lib/pili/stream.rb, line 94
def hls_live_urls
  live_hls_host = @hosts["live"]["hls"]

  urls = { Config.origin => "http://#{live_hls_host}/#{@hub}/#{@title}.m3u8" }

  @profiles.each do |profile|
    urls[profile] = "http://#{live_hls_host}/#{@hub}/#{@title}@#{profile}.m3u8"
  end

  urls
end
hls_playback_urls(start_second = -1, end_second = -1) click to toggle source
# File lib/pili/stream.rb, line 107
def hls_playback_urls(start_second = -1, end_second = -1)
  name = Time.now.to_i.to_s
  resp = API.save_stream_as(@credentials, @id, name, nil, start_second, end_second)
  urls = { Config.origin => resp["url"] }

  urls
end
http_flv_live_urls() click to toggle source
# File lib/pili/stream.rb, line 81
def http_flv_live_urls
  live_hdl_host = @hosts["live"]["hdl"]

  urls = { Config.origin => "http://#{live_hdl_host}/#{@hub}/#{@title}.flv" }

  @profiles.each do |profile|
    urls[profile] = "http://#{live_hdl_host}/#{@hub}/#{@title}@#{profile}.flv"
  end

  urls
end
rtmp_live_urls() click to toggle source
# File lib/pili/stream.rb, line 68
def rtmp_live_urls
  live_rtmp_host = @hosts["live"]["rtmp"]

  urls = { Config.origin => "rtmp://#{live_rtmp_host}/#{@hub}/#{@title}" }

  @profiles.each do |profile|
    urls[profile] = "rtmp://#{live_rtmp_host}/#{@hub}/#{@title}@#{profile}"
  end

  urls
end
rtmp_publish_url() click to toggle source
# File lib/pili/stream.rb, line 55
def rtmp_publish_url
  rtmp_publish_host = @hosts["publish"]["rtmp"]

  if @publish_security == "static"
    return "rtmp://#{rtmp_publish_host}/#{@hub}/#{@title}?key=#{@publish_key}"
  else
    nonce = Time.now.to_i
    token = Credentials.sign(publish_key, "/#{@hub}/#{@title}?nonce=#{nonce}")
    return "rtmp://#{rtmp_publish_host}/#{@hub}/#{@title}?nonce=#{nonce}&token=#{token}"
  end
end
save_as(name, format, start_time, end_time, notify_url = nil, pipeline = nil) click to toggle source
# File lib/pili/stream.rb, line 137
def save_as(name, format, start_time, end_time, notify_url = nil, pipeline = nil)
  API.save_stream_as(@credentials, @id, name, format, start_time, end_time, notify_url, pipeline)
end
segments(options = {}) click to toggle source
# File lib/pili/stream.rb, line 50
def segments(options = {})
  API.get_stream_segments(@credentials, @id, options)
end
snapshot(name, format, options = {}) click to toggle source
# File lib/pili/stream.rb, line 132
def snapshot(name, format, options = {})
  API.snapshot(@credentials, @id, name, format, options)
end
status() click to toggle source
# File lib/pili/stream.rb, line 25
def status
  API.get_stream_status(@credentials, @id)
end
to_h() click to toggle source
# File lib/pili/stream.rb, line 142
def to_h
  {
    credentials:      @credentials,
    id:               @id,
    title:            @title,
    hub:              @hub,
    profiles:         @profiles,
    publish_key:      @publish_key,
    publish_security: @publish_security,
    disabled:         @disabled,
    hosts:            @hosts,
    created_at:       @created_at,
    updated_at:       @updated_at
  }
end
to_json() click to toggle source
# File lib/pili/stream.rb, line 116
def to_json
  {
    id: @id,
    title: @title,
    hub: @hub,
    profiles: @profiles,
    publish_key: @publish_key,
    publish_security: @publish_security,
    disabled: @disabled,
    hosts: @hosts,
    created_at: @created_at,
    updated_at: @updated_at
  }.to_json
end
update(options = {}) click to toggle source
# File lib/pili/stream.rb, line 30
def update(options = {})
  API.update_stream(@credentials, @id, self.to_h.merge!(options))
end