Class: Conversant::V3::Services::VMS::Transcoding

Inherits:
Object
  • Object
show all
Defined in:
lib/conversant/v3/services/vms/transcoding.rb

Overview

Video transcoding service for job and preset management

Provides comprehensive job and preset management functionality for video transcoding operations including:

  • Transcoding job listing and filtering
  • Preset configuration management
  • Job status tracking

Examples:

Manage transcoding jobs

vms = Conversant::V3.vms(12345)

# Get recent transcoding jobs
jobs = vms.transcoding.jobs(page_size: 50, job_status: 2)

jobs.each do |job|
  puts "Job #{job['id']}: #{job['file_name']} - #{job['status']}"
end

# Get available presets
presets = vms.transcoding.presets

Since:

  • 1.0.0

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parent) ⇒ Transcoding

Initialize VOD transcoding service

Parameters:

  • parent (VMS)

    the parent VMS service instance

Since:

  • 1.0.0



36
37
38
# File 'lib/conversant/v3/services/vms/transcoding.rb', line 36

def initialize(parent)
  @parent = parent
end

Instance Attribute Details

#parentVMS (readonly)

Returns the parent VMS service instance.

Returns:

  • (VMS)

    the parent VMS service instance

Since:

  • 1.0.0



31
32
33
# File 'lib/conversant/v3/services/vms/transcoding.rb', line 31

def parent
  @parent
end

Instance Method Details

#jobs(payload = {}) ⇒ Array<Hash>

Get list of transcoding jobs

Retrieves a paginated list of video transcoding jobs with filtering options. Returns detailed information about each job including status, file name, transcoding configurations, and timestamps.

Examples:

Get recent transcoding jobs

jobs = vms.vod_transcoding.jobs(page_size: 50)
jobs.each { |job| puts "#{job['file_name']}: #{job['status']}" }

Filter by status

active_jobs = vms.vod_transcoding.jobs(job_status: 2, page_size: 100)

Parameters:

  • payload (Hash) (defaults to: {})

    query parameters for filtering and pagination

Options Hash (payload):

  • :page_number (Integer)

    page number (default: 1)

  • :page_size (Integer)

    number of results per page (default: 20)

  • :job_status (Integer)

    filter by job status (-1 for all)

  • :source_type (Integer)

    filter by source type (-1 for all)

  • :output_format (Integer)

    filter by output format (-1 for all)

  • :protection_type (Integer)

    filter by protection type (-1 for all)

  • :file_name (String)

    filter by file name

  • :period (String)

    time period filter (e.g., '0_30' for last 30 days)

  • :job_type (Integer)

    job type filter (default: 1)

Returns:

  • (Array<Hash>)

    array of transcoding job records, or empty array on error

Since:

  • 1.0.0



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/conversant/v3/services/vms/transcoding.rb', line 67

def jobs(payload = {})
  default_payload = {
    sEcho: 1,
    iColumns: 9,
    sColumns: nil,
    iDisplayStart: 0,
    iDisplayLength: 20,
    mDataProp_0: 'id',
    mDataProp_1: 'file_name',
    mDataProp_2: 'transcoding_configs',
    mDataProp_3: 'created',
    mDataProp_4: 'source_type',
    mDataProp_5: 'ended',
    mDataProp_6: 'transcoding_configs',
    mDataProp_7: 'status',
    mDataProp_8: 'id',
    iSortingCols: '0',
    bSortable_0: 'false',
    bSortable_1: 'true',
    bSortable_2: 'false',
    bSortable_3: 'true',
    bSortable_4: 'false',
    bSortable_5: 'true',
    bSortable_6: 'false',
    bSortable_7: 'false',
    bSortable_8: 'false',
    page_number: 1,
    page_size: 20,
    sort_field: nil,
    sort_type: nil,
    job_status: -1,
    source_type: -1,
    output_format: -1,
    protection_type: -1,
    file_name: nil,
    period: '0_30',
    job_type: 1,
    _: (Time.now.to_f * 1000).to_i
  }

  merged_payload = default_payload.merge(payload)
  response = @parent.send(:call, 'GET', "/v2/jobs?#{merged_payload.to_query}")
  return [] if response.nil?

  JSON.parse(response)&.[]("list") || []
rescue StandardError => e
  logger.error "#{@parent.send(:identifier)}.METHOD:#{__method__}.EXCEPTION:#{e.message}"
  []
end

#presets(payload = {}) ⇒ Array<Hash>

Get list of transcoding presets

Retrieves a paginated list of transcoding preset configurations. Presets define encoding parameters such as resolution, bitrate, codec settings, and output formats.

Examples:

Get available presets

presets = vms.vod_transcoding.presets
presets.each do |preset|
  puts "#{preset['name']}: #{preset['description']}"
end

Get first page with custom size

presets = vms.vod_transcoding.presets(page_number: 1, page_size: 50)

Parameters:

  • payload (Hash) (defaults to: {})

    query parameters for pagination

Options Hash (payload):

  • :page_number (Integer)

    page number (default: 1)

  • :page_size (Integer)

    number of results per page (default: 20)

Returns:

  • (Array<Hash>)

    array of transcoding preset configurations, or empty array on error

Since:

  • 1.0.0



139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# File 'lib/conversant/v3/services/vms/transcoding.rb', line 139

def presets(payload = {})
  default_payload = {
    sEcho: 1,
    iColumns: 5,
    sColumns: nil,
    iDisplayStart: 0,
    iDisplayLength: 20,
    mDataProp_0: 'id',
    mDataProp_1: 'name',
    mDataProp_2: 'id',
    mDataProp_3: 'description',
    mDataProp_4: 'id',
    iSortingCols: '0',
    bSortable_0: 'false',
    bSortable_1: 'false',
    bSortable_2: 'false',
    bSortable_3: 'false',
    bSortable_4: 'false',
    page_number: 1,
    page_size: 20,
    _: (Time.now.to_f * 1000).to_i
  }

  merged_payload = default_payload.merge(payload)
  response = @parent.send(:call, 'GET', "/v2/osp/presets?#{merged_payload.to_query}")
  return [] if response.nil?

  JSON.parse(response)&.[]("list") || []
rescue StandardError => e
  logger.error "#{@parent.send(:identifier)}.METHOD:#{__method__}.EXCEPTION:#{e.message}"
  []
end