wsc_sdk 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.circleci/config.yml +146 -0
- data/.circleci/docker/build/Dockerfile +3 -0
- data/.circleci/helpers/add_preamble.rb +29 -0
- data/.circleci/helpers/build_docs.sh +5 -0
- data/.circleci/helpers/build_gem.sh +5 -0
- data/.circleci/helpers/debundle-context.sh +14 -0
- data/.circleci/helpers/finalize_release.sh +24 -0
- data/.circleci/helpers/publish_docs.sh +10 -0
- data/.circleci/helpers/release_gem.sh +8 -0
- data/.circleci/helpers/setup.sh +11 -0
- data/.circleci/helpers/setup_aws.sh +13 -0
- data/.circleci/helpers/setup_gem.sh +2 -0
- data/.circleci/helpers/setup_git.sh +27 -0
- data/.circleci/helpers/setup_rubygems.sh +15 -0
- data/.circleci/helpers/test_integration.sh +12 -0
- data/.circleci/helpers/test_unit.sh +6 -0
- data/.circleci/jobs/publish-production.sh +17 -0
- data/.circleci/jobs/publish-staging.sh +17 -0
- data/.circleci/jobs/release-production.sh +21 -0
- data/.circleci/jobs/test-integration.sh +9 -0
- data/.circleci/jobs/test-unit.sh +9 -0
- data/.circleci/tag_repo.rb +46 -0
- data/.gitignore +28 -0
- data/.rspec +2 -0
- data/.yard/config +2 -0
- data/.yard/template/default/fulldoc/html/css/custom.css +151 -0
- data/.yard/template/default/layout/html/footer.erb +0 -0
- data/.yard/template/default/layout/html/headers.erb +10 -0
- data/.yard/template/default/layout/html/layout.erb +45 -0
- data/.yard/template/default/layout/html/setup.rb +24 -0
- data/.yardopts +1 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +99 -0
- data/LICENSE.txt +28 -0
- data/README.md +397 -0
- data/Rakefile +2 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/doc/Hash.html +291 -0
- data/doc/WscSdk.html +570 -0
- data/doc/WscSdk/ApiResponse.html +242 -0
- data/doc/WscSdk/Attributes.html +128 -0
- data/doc/WscSdk/Attributes/Mode.html +191 -0
- data/doc/WscSdk/Attributes/Type.html +389 -0
- data/doc/WscSdk/Client.html +2677 -0
- data/doc/WscSdk/Configuration.html +595 -0
- data/doc/WscSdk/Endpoint.html +2974 -0
- data/doc/WscSdk/Endpoints.html +141 -0
- data/doc/WscSdk/Endpoints/CustomStreamTargets.html +383 -0
- data/doc/WscSdk/Endpoints/LiveStreams.html +197 -0
- data/doc/WscSdk/Endpoints/OutputStreamTargets.html +180 -0
- data/doc/WscSdk/Endpoints/Outputs.html +180 -0
- data/doc/WscSdk/Endpoints/StreamTargets.html +446 -0
- data/doc/WscSdk/Endpoints/Transcoders.html +197 -0
- data/doc/WscSdk/Endpoints/UllStreamTargets.html +383 -0
- data/doc/WscSdk/Endpoints/WowzaStreamTargets.html +383 -0
- data/doc/WscSdk/Enum.html +225 -0
- data/doc/WscSdk/Enums.html +321 -0
- data/doc/WscSdk/Enums/BillingMode.html +188 -0
- data/doc/WscSdk/Enums/BroadcastLocation.html +396 -0
- data/doc/WscSdk/Enums/BufferSize.html +301 -0
- data/doc/WscSdk/Enums/ClosedCaptionType.html +221 -0
- data/doc/WscSdk/Enums/CustomProvider.html +252 -0
- data/doc/WscSdk/Enums/DeliveryMethod.html +188 -0
- data/doc/WscSdk/Enums/DeliveryType.html +188 -0
- data/doc/WscSdk/Enums/Encoder.html +460 -0
- data/doc/WscSdk/Enums/Errors.html +555 -0
- data/doc/WscSdk/Enums/IdleTimeout.html +398 -0
- data/doc/WscSdk/Enums/ImagePosition.html +220 -0
- data/doc/WscSdk/Enums/ModelMode.html +175 -0
- data/doc/WscSdk/Enums/ModelType.html +373 -0
- data/doc/WscSdk/Enums/PlayerType.html +188 -0
- data/doc/WscSdk/Enums/Protocol.html +204 -0
- data/doc/WscSdk/Enums/TargetDeliveryProtocol.html +188 -0
- data/doc/WscSdk/Enums/TranscoderType.html +188 -0
- data/doc/WscSdk/Enums/UserRegion.html +383 -0
- data/doc/WscSdk/Enums/WowzaProvider.html +188 -0
- data/doc/WscSdk/Errors.html +683 -0
- data/doc/WscSdk/Loggable.html +346 -0
- data/doc/WscSdk/Model.html +3316 -0
- data/doc/WscSdk/ModelList.html +442 -0
- data/doc/WscSdk/ModelTemplate.html +267 -0
- data/doc/WscSdk/Models.html +141 -0
- data/doc/WscSdk/Models/CustomStreamTarget.html +192 -0
- data/doc/WscSdk/Models/Error.html +351 -0
- data/doc/WscSdk/Models/LiveStream.html +601 -0
- data/doc/WscSdk/Models/LiveStreamConnectionCode.html +192 -0
- data/doc/WscSdk/Models/LiveStreamState.html +200 -0
- data/doc/WscSdk/Models/LiveStreamStats.html +200 -0
- data/doc/WscSdk/Models/LiveStreamThumbnailUrl.html +200 -0
- data/doc/WscSdk/Models/Output.html +294 -0
- data/doc/WscSdk/Models/OutputStreamTarget.html +274 -0
- data/doc/WscSdk/Models/StreamTarget.html +273 -0
- data/doc/WscSdk/Models/Transcoder.html +793 -0
- data/doc/WscSdk/Models/TranscoderBooleanStat.html +278 -0
- data/doc/WscSdk/Models/TranscoderConnectionCode.html +192 -0
- data/doc/WscSdk/Models/TranscoderFloatStat.html +278 -0
- data/doc/WscSdk/Models/TranscoderIntegerStat.html +278 -0
- data/doc/WscSdk/Models/TranscoderState.html +196 -0
- data/doc/WscSdk/Models/TranscoderStats.html +196 -0
- data/doc/WscSdk/Models/TranscoderStreamTargetState.html +192 -0
- data/doc/WscSdk/Models/TranscoderStringStat.html +278 -0
- data/doc/WscSdk/Models/TranscoderThumbnailUrl.html +196 -0
- data/doc/WscSdk/Models/UllStreamTarget.html +360 -0
- data/doc/WscSdk/Models/WowzaStreamTarget.html +380 -0
- data/doc/WscSdk/Pagination.html +1277 -0
- data/doc/WscSdk/Schema.html +861 -0
- data/doc/WscSdk/SchemaAttribute.html +2400 -0
- data/doc/WscSdk/Templates.html +141 -0
- data/doc/WscSdk/Templates/CustomStreamTarget.html +1045 -0
- data/doc/WscSdk/Templates/LiveStream.html +1432 -0
- data/doc/WscSdk/Templates/Output.html +829 -0
- data/doc/WscSdk/Templates/Transcoder.html +699 -0
- data/doc/WscSdk/Templates/UllStreamTarget.html +411 -0
- data/doc/WscSdk/Templates/WowzaStreamTarget.html +447 -0
- data/doc/WscSdk/TranscoderSharedMethods.html +1113 -0
- data/doc/_index.html +705 -0
- data/doc/class_list.html +51 -0
- data/doc/css/bootstrap.css +5 -0
- data/doc/css/common.css +1 -0
- data/doc/css/custom.css +151 -0
- data/doc/css/full_list.css +58 -0
- data/doc/css/style.css +496 -0
- data/doc/file.README.html +570 -0
- data/doc/file_list.html +56 -0
- data/doc/frames.html +17 -0
- data/doc/images/wsc-ruby-1800x400.png +0 -0
- data/doc/index.html +570 -0
- data/doc/js/app.js +292 -0
- data/doc/js/full_list.js +216 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +1731 -0
- data/doc/top-level-namespace.html +182 -0
- data/examples/client.rb +40 -0
- data/examples/helpers.rb +100 -0
- data/examples/live_streams/create.rb +39 -0
- data/examples/live_streams/delete.rb +32 -0
- data/examples/live_streams/find.rb +22 -0
- data/examples/live_streams/flood.rb +126 -0
- data/examples/live_streams/list.rb +24 -0
- data/examples/live_streams/regenerate_connection_code.rb +29 -0
- data/examples/live_streams/reset.rb +32 -0
- data/examples/live_streams/reset_and_wait.rb +51 -0
- data/examples/live_streams/start.rb +33 -0
- data/examples/live_streams/start_and_wait.rb +51 -0
- data/examples/live_streams/state.rb +33 -0
- data/examples/live_streams/stats.rb +43 -0
- data/examples/live_streams/stop.rb +33 -0
- data/examples/live_streams/stop_and_wait.rb +51 -0
- data/examples/live_streams/thumbnail_url.rb +46 -0
- data/examples/live_streams/update.rb +43 -0
- data/examples/live_streams/workflow.rb +165 -0
- data/examples/output_stream_targets/create.rb +56 -0
- data/examples/output_stream_targets/delete.rb +45 -0
- data/examples/output_stream_targets/find.rb +37 -0
- data/examples/output_stream_targets/list.rb +36 -0
- data/examples/output_stream_targets/update.rb +56 -0
- data/examples/outputs/create.rb +49 -0
- data/examples/outputs/delete.rb +39 -0
- data/examples/outputs/find.rb +31 -0
- data/examples/outputs/list.rb +29 -0
- data/examples/outputs/update.rb +50 -0
- data/examples/stream_targets/custom/create.rb +42 -0
- data/examples/stream_targets/custom/delete.rb +31 -0
- data/examples/stream_targets/custom/find.rb +23 -0
- data/examples/stream_targets/custom/list.rb +24 -0
- data/examples/stream_targets/custom/update.rb +43 -0
- data/examples/stream_targets/list.rb +24 -0
- data/examples/stream_targets/ull/create.rb +41 -0
- data/examples/stream_targets/ull/delete.rb +31 -0
- data/examples/stream_targets/ull/find.rb +23 -0
- data/examples/stream_targets/ull/list.rb +24 -0
- data/examples/stream_targets/ull/update.rb +43 -0
- data/examples/stream_targets/wowza/create.rb +42 -0
- data/examples/stream_targets/wowza/delete.rb +31 -0
- data/examples/stream_targets/wowza/find.rb +23 -0
- data/examples/stream_targets/wowza/list.rb +23 -0
- data/examples/stream_targets/wowza/update.rb +43 -0
- data/examples/transcoders/create.rb +39 -0
- data/examples/transcoders/delete.rb +31 -0
- data/examples/transcoders/find.rb +23 -0
- data/examples/transcoders/list.rb +24 -0
- data/examples/transcoders/reset.rb +32 -0
- data/examples/transcoders/reset_and_wait.rb +48 -0
- data/examples/transcoders/start.rb +33 -0
- data/examples/transcoders/start_and_wait.rb +50 -0
- data/examples/transcoders/state.rb +33 -0
- data/examples/transcoders/stats.rb +43 -0
- data/examples/transcoders/stop.rb +33 -0
- data/examples/transcoders/stop_and_wait.rb +50 -0
- data/examples/transcoders/thumbnail_url.rb +46 -0
- data/examples/transcoders/update.rb +43 -0
- data/images/wsc-ruby-1800x400.png +0 -0
- data/lib/wsc_sdk.rb +81 -0
- data/lib/wsc_sdk/client.rb +417 -0
- data/lib/wsc_sdk/configuration.rb +21 -0
- data/lib/wsc_sdk/constants.rb +29 -0
- data/lib/wsc_sdk/endpoint.rb +492 -0
- data/lib/wsc_sdk/endpoints/custom_stream_targets.rb +44 -0
- data/lib/wsc_sdk/endpoints/live_streams.rb +34 -0
- data/lib/wsc_sdk/endpoints/output_stream_targets.rb +17 -0
- data/lib/wsc_sdk/endpoints/outputs.rb +17 -0
- data/lib/wsc_sdk/endpoints/stream_targets.rb +45 -0
- data/lib/wsc_sdk/endpoints/transcoders.rb +38 -0
- data/lib/wsc_sdk/endpoints/ull_stream_targets.rb +44 -0
- data/lib/wsc_sdk/endpoints/wowza_stream_targets.rb +44 -0
- data/lib/wsc_sdk/enums.rb +31 -0
- data/lib/wsc_sdk/enums/billing_mode.rb +20 -0
- data/lib/wsc_sdk/enums/broadcast_location.rb +58 -0
- data/lib/wsc_sdk/enums/buffer_size.rb +41 -0
- data/lib/wsc_sdk/enums/closed_caption_type.rb +26 -0
- data/lib/wsc_sdk/enums/custom_provider.rb +32 -0
- data/lib/wsc_sdk/enums/delivery_method.rb +20 -0
- data/lib/wsc_sdk/enums/delivery_type.rb +20 -0
- data/lib/wsc_sdk/enums/encoder.rb +71 -0
- data/lib/wsc_sdk/enums/idle_timeout.rb +50 -0
- data/lib/wsc_sdk/enums/image_position.rb +26 -0
- data/lib/wsc_sdk/enums/player_type.rb +20 -0
- data/lib/wsc_sdk/enums/protocol.rb +23 -0
- data/lib/wsc_sdk/enums/target_delivery_protocol.rb +20 -0
- data/lib/wsc_sdk/enums/transcoder_type.rb +20 -0
- data/lib/wsc_sdk/enums/wowza_provider.rb +20 -0
- data/lib/wsc_sdk/errors.rb +115 -0
- data/lib/wsc_sdk/model.rb +515 -0
- data/lib/wsc_sdk/model_list.rb +42 -0
- data/lib/wsc_sdk/model_template.rb +27 -0
- data/lib/wsc_sdk/models/custom_stream_target.rb +34 -0
- data/lib/wsc_sdk/models/error.rb +53 -0
- data/lib/wsc_sdk/models/live_stream.rb +130 -0
- data/lib/wsc_sdk/models/live_stream_connection_code.rb +31 -0
- data/lib/wsc_sdk/models/live_stream_state.rb +20 -0
- data/lib/wsc_sdk/models/live_stream_stats.rb +20 -0
- data/lib/wsc_sdk/models/live_stream_thumbnail_url.rb +20 -0
- data/lib/wsc_sdk/models/output.rb +61 -0
- data/lib/wsc_sdk/models/output_stream_target.rb +37 -0
- data/lib/wsc_sdk/models/stream_target.rb +29 -0
- data/lib/wsc_sdk/models/transcoder.rb +135 -0
- data/lib/wsc_sdk/models/transcoder_boolean_stat.rb +41 -0
- data/lib/wsc_sdk/models/transcoder_connection_code.rb +29 -0
- data/lib/wsc_sdk/models/transcoder_float_stat.rb +40 -0
- data/lib/wsc_sdk/models/transcoder_integer_stat.rb +40 -0
- data/lib/wsc_sdk/models/transcoder_state.rb +31 -0
- data/lib/wsc_sdk/models/transcoder_stats.rb +51 -0
- data/lib/wsc_sdk/models/transcoder_stream_target_state.rb +29 -0
- data/lib/wsc_sdk/models/transcoder_string_stat.rb +40 -0
- data/lib/wsc_sdk/models/transcoder_thumbnail_url.rb +29 -0
- data/lib/wsc_sdk/models/ull_stream_target.rb +54 -0
- data/lib/wsc_sdk/models/wowza_stream_target.rb +60 -0
- data/lib/wsc_sdk/modules/api_response.rb +24 -0
- data/lib/wsc_sdk/modules/loggable.rb +44 -0
- data/lib/wsc_sdk/modules/transcoder_shared_methods.rb +221 -0
- data/lib/wsc_sdk/pagination.rb +89 -0
- data/lib/wsc_sdk/schema.rb +140 -0
- data/lib/wsc_sdk/schema_attribute.rb +349 -0
- data/lib/wsc_sdk/templates/custom_stream_target.rb +154 -0
- data/lib/wsc_sdk/templates/live_stream.rb +234 -0
- data/lib/wsc_sdk/templates/output.rb +133 -0
- data/lib/wsc_sdk/templates/transcoder.rb +97 -0
- data/lib/wsc_sdk/templates/ull_stream_target.rb +49 -0
- data/lib/wsc_sdk/templates/wowza_stream_target.rb +57 -0
- data/lib/wsc_sdk/version.rb +7 -0
- data/wsc_sdk.gemspec +48 -0
- metadata +460 -0
@@ -0,0 +1,165 @@
|
|
1
|
+
####> This code and all components © 2015 – 2019 Wowza Media Systems, LLC. All rights reserved.
|
2
|
+
####> This code is licensed pursuant to the BSD 3-Clause License.
|
3
|
+
|
4
|
+
require "wsc_sdk"
|
5
|
+
require_relative "../client" # Include our client configuration
|
6
|
+
require_relative "../helpers" # Include some helpers to make the code more direct
|
7
|
+
|
8
|
+
# Turn down the logging
|
9
|
+
$client.logger.level = Logger::Severity::UNKNOWN # Disable logging output
|
10
|
+
|
11
|
+
# Ensure the args passed in are present.
|
12
|
+
arguments = ask_for_arguments(__FILE__, live_stream_name: nil, source_url: nil, )
|
13
|
+
|
14
|
+
# Extract some data into convenience variables
|
15
|
+
live_streams = $client.live_streams
|
16
|
+
|
17
|
+
# Build a RTMP/pull live_stream using a predefined template
|
18
|
+
name = arguments[0]
|
19
|
+
source_url = arguments[1]
|
20
|
+
live_stream_data = WscSdk::Templates::LiveStream.rtsp_pull(name, 1920, 1080, source_url)
|
21
|
+
|
22
|
+
# Build the live_stream object
|
23
|
+
live_stream = live_streams.build(live_stream_data)
|
24
|
+
|
25
|
+
# If the live_stream is invalid, output the messages and exit
|
26
|
+
unless (live_stream.valid?)
|
27
|
+
puts "Live Stream is invalid:"
|
28
|
+
|
29
|
+
live_stream.errors.each do |field, message|
|
30
|
+
puts " - #{field}: #{message}"
|
31
|
+
end
|
32
|
+
exit
|
33
|
+
end
|
34
|
+
|
35
|
+
# Get the result of saving the object to the API
|
36
|
+
saved = live_stream.save
|
37
|
+
|
38
|
+
# Handle an API error (in the helpers.rb file)
|
39
|
+
handle_api_error(saved, "There was an error creating the live stream") unless saved.success?
|
40
|
+
|
41
|
+
# Defined in the helpers.rb file.
|
42
|
+
output_model_attributes(live_stream, "Live Stream: #{live_stream.name}")
|
43
|
+
|
44
|
+
puts ""
|
45
|
+
puts "Starting Live Stream: #{live_stream.name}"
|
46
|
+
start_time = Time.now
|
47
|
+
# Get the result of starting the live_stream. We add a code block, which
|
48
|
+
# instructs the SDK to enter a wait loop, and periodically polls the API
|
49
|
+
# for the live_stream state until either the `started` state is returned or
|
50
|
+
# the timeout period is reached.
|
51
|
+
state = live_stream.start(timeout: 300) do |wait_state, live_stream_state|
|
52
|
+
|
53
|
+
# This code will execute each time the state of the live_stream is polled
|
54
|
+
# during the wait loop. You can check the wait_state to determine what the
|
55
|
+
# outcomes of each request are.
|
56
|
+
if wait_state == :waiting
|
57
|
+
elapsed = Time.now - start_time
|
58
|
+
# We're still waiting for the started state to be returned
|
59
|
+
puts " |> Waiting for Live Stream Start... [#{elapsed}s]"
|
60
|
+
elsif wait_state == :complete
|
61
|
+
puts " |> Live stream has started!!!"
|
62
|
+
elsif wait_state == :timeout
|
63
|
+
# A timeout occurs if the start state isn't reached within the timeout
|
64
|
+
# limit, which defaults to 30 seconds.
|
65
|
+
|
66
|
+
puts "TIMEOUT: Could not start the live stream within the timeout period of 5 minutes."
|
67
|
+
puts "The last state received was: #{live_stream_state.state} ... If the state is 'starting' be sure not to forgot to manually stop the live stream."
|
68
|
+
exit
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
|
73
|
+
puts ""
|
74
|
+
puts "Letting the Live Stream run for 5 minutes..."
|
75
|
+
|
76
|
+
# Setup a timer and elapsed time calculation.
|
77
|
+
start_time = Time.now
|
78
|
+
elapsed = start_time - Time.now
|
79
|
+
|
80
|
+
# Loop for 5 minutes
|
81
|
+
while(elapsed < 300)
|
82
|
+
|
83
|
+
# Refresh the live_stream if the hoste_page_url isn't populated yet.
|
84
|
+
live_stream.refresh if (live_stream.hosted_page and live_stream.hosted_page_url == "in_progress")
|
85
|
+
|
86
|
+
# Request the current stats for the live stream.
|
87
|
+
stats = live_stream.stats
|
88
|
+
|
89
|
+
# Request the current thumbnail for the live stream.
|
90
|
+
thumbnail_url = live_stream.thumbnail_url
|
91
|
+
|
92
|
+
|
93
|
+
|
94
|
+
puts ""
|
95
|
+
puts "Live Stream Stats: [Run Time: #{elapsed}s]"
|
96
|
+
|
97
|
+
if (live_stream.hosted_page and live_stream.hosted_page_url != "in_progress")
|
98
|
+
puts ""
|
99
|
+
puts " |> You can view this live stream here: #{live_stream.hosted_page_url}"
|
100
|
+
puts ""
|
101
|
+
end
|
102
|
+
|
103
|
+
if stats.success?
|
104
|
+
max_attr_length = stats.attributes.map{ |k, v| k.to_s.length }.max
|
105
|
+
stats.attributes.each do |attribute, value|
|
106
|
+
puts " |> #{attribute.to_s.ljust(max_attr_length)} : #{value}"
|
107
|
+
end
|
108
|
+
else
|
109
|
+
puts " !! Could not retrieve Live Stream stats"
|
110
|
+
end
|
111
|
+
|
112
|
+
if thumbnail_url.success?
|
113
|
+
puts " |> #{"tumbnail_url".ljust(max_attr_length)} : #{thumbnail_url.thumbnail_url}"
|
114
|
+
else
|
115
|
+
puts " !! Could not retrieve Live Stream thumbnail"
|
116
|
+
end
|
117
|
+
|
118
|
+
puts ""
|
119
|
+
puts "-"*80
|
120
|
+
|
121
|
+
# Pause for a few seconds. You don't need to poll stats or the thumbnail any
|
122
|
+
# more frequently than every 5 seconds. The data isn't generated any more
|
123
|
+
# frequently than that.
|
124
|
+
sleep(5)
|
125
|
+
elapsed = Time.now - start_time
|
126
|
+
end
|
127
|
+
|
128
|
+
# Stop the live stream!
|
129
|
+
|
130
|
+
# Get the result of stopping the live_stream. We add a code block, which
|
131
|
+
# instructs the SDK to enter a wait loop and periodically polls the API
|
132
|
+
# for the live_stream state until either the `stopped` state is returned or
|
133
|
+
# the timeout period is reached.
|
134
|
+
state = live_stream.stop do |wait_state, live_stream_state|
|
135
|
+
|
136
|
+
# This code will execute each time the state of the live_stream is polled
|
137
|
+
# during the wait loop. You can check the wait_state to determine what the
|
138
|
+
# outcomes of each request are.
|
139
|
+
|
140
|
+
if wait_state == :waiting
|
141
|
+
# We're still waiting for the stopped state to be returned
|
142
|
+
puts "Waiting..."
|
143
|
+
elsif wait_state == :complete
|
144
|
+
# We've successfully stopped the live_stream
|
145
|
+
# Defined in helpers.rb
|
146
|
+
output_model_attributes(live_stream_state, "Completed Live Stream State:")
|
147
|
+
elsif wait_state == :timeout
|
148
|
+
# A timeout occurs if the stop state isn't reached within the timeout
|
149
|
+
# limit, which defaults to 30 seconds.
|
150
|
+
|
151
|
+
puts "TIMEOUT: Could not stop the live stream within the timeout period."
|
152
|
+
puts "The last state received was: #{live_stream_state.state} ... If the state is not 'stopping' or 'stopped' don't forgot to manually stop the live stream."
|
153
|
+
exit
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
|
158
|
+
# Delete the live stream.
|
159
|
+
puts "Deleting the live stream..."
|
160
|
+
deleted = live_stream.delete
|
161
|
+
|
162
|
+
puts " !! There was an error deleting the Live Stream, you will have to manually delete it" unless deleted.success?
|
163
|
+
|
164
|
+
puts ""
|
165
|
+
puts "Live Stream workflow complete!!"
|
@@ -0,0 +1,56 @@
|
|
1
|
+
####> This code and all components © 2015 – 2019 Wowza Media Systems, LLC. All rights reserved.
|
2
|
+
####> This code is licensed pursuant to the BSD 3-Clause License.
|
3
|
+
|
4
|
+
require "wsc_sdk"
|
5
|
+
require_relative "../client" # Get our client
|
6
|
+
require_relative "../helpers" # Include some helpers to make the code more direct
|
7
|
+
|
8
|
+
# Ensure the args passed in are present
|
9
|
+
arguments = ask_for_arguments(__FILE__, transcoder_id: nil, output_id: nil, stream_target_id: nil)
|
10
|
+
|
11
|
+
# Extract some data into convenience variables
|
12
|
+
transcoders = $client.transcoders
|
13
|
+
transcoder_id = arguments[0]
|
14
|
+
output_id = arguments[1]
|
15
|
+
stream_target_id = arguments[2]
|
16
|
+
|
17
|
+
# Request the specific transcoder
|
18
|
+
transcoder = transcoders.find(transcoder_id)
|
19
|
+
|
20
|
+
# Handle an API error (in the helpers.rb file)
|
21
|
+
handle_api_error(transcoder, "There was an error retrieving the transcoder") unless transcoder.success?
|
22
|
+
|
23
|
+
# Request the specific output
|
24
|
+
output = transcoder.outputs.find(output_id)
|
25
|
+
|
26
|
+
# Handle an API error (in the helpers.rb file)
|
27
|
+
handle_api_error(output, "There was an error retrieving the output") unless transcoder.success?
|
28
|
+
|
29
|
+
# Build a Full HD output using a pre-defined template data, and modifying a
|
30
|
+
# few values
|
31
|
+
output_stream_target_data = {
|
32
|
+
stream_target_id: stream_target_id
|
33
|
+
}
|
34
|
+
|
35
|
+
# Build a new instance of the output object, and use it
|
36
|
+
output_stream_target = output.output_stream_targets.build(output_stream_target_data)
|
37
|
+
|
38
|
+
# Make sure the output is valid
|
39
|
+
unless output_stream_target.valid?
|
40
|
+
puts "Invalid Output Stream Target:"
|
41
|
+
output.errors.each do |field, message|
|
42
|
+
puts " - #{field}: #{message}"
|
43
|
+
end
|
44
|
+
exit
|
45
|
+
end
|
46
|
+
|
47
|
+
# Get the results of saving the output
|
48
|
+
saved = output_stream_target.save
|
49
|
+
|
50
|
+
# Handle an API error (in the helpers.rb file)
|
51
|
+
handle_api_error(saved, "There was an error creating the output stream target") unless saved.success?
|
52
|
+
|
53
|
+
# We've successfully saved the output then output some output about the
|
54
|
+
# output
|
55
|
+
# Defined in helpers.rb
|
56
|
+
output_model_attributes(output_stream_target, "Output Stream Target: #{output_stream_target.id}")
|
@@ -0,0 +1,45 @@
|
|
1
|
+
####> This code and all components © 2015 – 2019 Wowza Media Systems, LLC. All rights reserved.
|
2
|
+
####> This code is licensed pursuant to the BSD 3-Clause License.
|
3
|
+
|
4
|
+
require "wsc_sdk"
|
5
|
+
require_relative "../client" # Get our client
|
6
|
+
require_relative "../helpers" # Include some helpers to make the code more direct
|
7
|
+
|
8
|
+
# Ensure the args passed in are present
|
9
|
+
arguments = ask_for_arguments(__FILE__, transcoder_id: nil, output_id: nil, output_stream_target_id: nil)
|
10
|
+
|
11
|
+
# Extract some data into convenience variables
|
12
|
+
transcoders = $client.transcoders
|
13
|
+
transcoder_id = arguments[0]
|
14
|
+
output_id = arguments[1]
|
15
|
+
output_stream_target_id = arguments[2]
|
16
|
+
|
17
|
+
# Request the specific transcoder
|
18
|
+
transcoder = transcoders.find(transcoder_id)
|
19
|
+
|
20
|
+
# Handle an API error (in the helpers.rb file)
|
21
|
+
handle_api_error(transcoder, "There was an error retrieving the transcoder") unless transcoder.success?
|
22
|
+
|
23
|
+
# Request the specific output
|
24
|
+
output = transcoder.outputs.find(output_id)
|
25
|
+
|
26
|
+
# Handle an API error (in the helpers.rb file)
|
27
|
+
handle_api_error(output, "There was an error retrieving the output") unless output.success?
|
28
|
+
|
29
|
+
output_stream_target = output.output_stream_targets.find(output_stream_target_id)
|
30
|
+
|
31
|
+
# Handle an API error (in the helpers.rb file)
|
32
|
+
handle_api_error(output_stream_target, "There was an error retrieving the output stream target") unless output_stream_target.success?
|
33
|
+
|
34
|
+
# Delete the output
|
35
|
+
result = output_stream_target.delete
|
36
|
+
|
37
|
+
# Handle an API error (in the helpers.rb file)
|
38
|
+
handle_api_error(result, "There was an error deleting the output stream target") unless result.success?
|
39
|
+
|
40
|
+
# If we've successfully deleted the output, then output some output about the
|
41
|
+
# output. Note that the data for the output still exists locally in the
|
42
|
+
# SDK, however the ID has been removed since it no longer references a
|
43
|
+
# valid record in the API.
|
44
|
+
# Defined in helpers.rb
|
45
|
+
output_model_attributes(output_stream_target, "Output Stream Target: #{output_stream_target.id}")
|
@@ -0,0 +1,37 @@
|
|
1
|
+
####> This code and all components © 2015 – 2019 Wowza Media Systems, LLC. All rights reserved.
|
2
|
+
####> This code is licensed pursuant to the BSD 3-Clause License.
|
3
|
+
|
4
|
+
require "wsc_sdk"
|
5
|
+
require_relative "../client" # Get our client
|
6
|
+
require_relative "../helpers" # Include some helpers to make the code more direct
|
7
|
+
|
8
|
+
# Ensure the args passed in are present
|
9
|
+
arguments = ask_for_arguments(__FILE__, transcoder_id: nil, output_id: nil, output_stream_target_id: nil)
|
10
|
+
|
11
|
+
# Extract some data into convenience variables
|
12
|
+
transcoders = $client.transcoders
|
13
|
+
transcoder_id = arguments[0]
|
14
|
+
output_id = arguments[1]
|
15
|
+
output_stream_target_id = arguments[2]
|
16
|
+
|
17
|
+
# Request the specific transcoder
|
18
|
+
transcoder = transcoders.find(transcoder_id)
|
19
|
+
|
20
|
+
# Handle an API error (in the helpers.rb file)
|
21
|
+
handle_api_error(transcoder, "There was an error retrieving the transcoder") unless transcoder.success?
|
22
|
+
|
23
|
+
# Request the specific output
|
24
|
+
output = transcoder.outputs.find(output_id)
|
25
|
+
|
26
|
+
# Handle an API error (in the helpers.rb file)
|
27
|
+
handle_api_error(output, "There was an error retrieving the output") unless output.success?
|
28
|
+
|
29
|
+
output_stream_target = output.output_stream_targets.find(output_stream_target_id)
|
30
|
+
|
31
|
+
# Handle an API error (in the helpers.rb file)
|
32
|
+
handle_api_error(output_stream_target, "There was an error retrieving the output stream target") unless output_stream_target.success?
|
33
|
+
|
34
|
+
# If we've successfully found the output then output some output about the
|
35
|
+
# output.
|
36
|
+
# Defined in helpers.rb
|
37
|
+
output_model_attributes(output_stream_target, "Output Stream Target: #{output_stream_target.id}")
|
@@ -0,0 +1,36 @@
|
|
1
|
+
####> This code and all components © 2015 – 2019 Wowza Media Systems, LLC. All rights reserved.
|
2
|
+
####> This code is licensed pursuant to the BSD 3-Clause License.
|
3
|
+
|
4
|
+
require "wsc_sdk"
|
5
|
+
require_relative "../client" # Get our client
|
6
|
+
require_relative "../helpers" # Include some helpers to make the code more direct
|
7
|
+
|
8
|
+
# Ensure the args passed in are present
|
9
|
+
arguments = ask_for_arguments(__FILE__, transcoder_id: nil, output_id: nil)
|
10
|
+
|
11
|
+
# Extract some data into convenience variables
|
12
|
+
transcoders = $client.transcoders
|
13
|
+
transcoder_id = arguments[0]
|
14
|
+
output_id = arguments[1]
|
15
|
+
|
16
|
+
# Request the specific transcoder
|
17
|
+
transcoder = transcoders.find(transcoder_id)
|
18
|
+
|
19
|
+
# Handle an API error (in the helpers.rb file)
|
20
|
+
handle_api_error(transcoder, "There was an error retrieving the transcoder") unless transcoder.success?
|
21
|
+
|
22
|
+
# Request the specific output
|
23
|
+
output = transcoder.outputs.find(output_id)
|
24
|
+
|
25
|
+
# Handle an API error (in the helpers.rb file)
|
26
|
+
handle_api_error(output, "There was an error retrieving the output") unless transcoder.success?
|
27
|
+
|
28
|
+
# Request the outputs list
|
29
|
+
list = output.output_stream_targets.list
|
30
|
+
|
31
|
+
# Handle an API error (in the helpers.rb file)
|
32
|
+
handle_api_error(list, "There was an error retrieving the output stream targets list") unless list.success?
|
33
|
+
|
34
|
+
# Output the list of output stream targets
|
35
|
+
# Defined in helpers.rb
|
36
|
+
output_model_list(list, "Outputs Stream Targets for Output '#{output.name}':")
|
@@ -0,0 +1,56 @@
|
|
1
|
+
####> This code and all components © 2015 – 2019 Wowza Media Systems, LLC. All rights reserved.
|
2
|
+
####> This code is licensed pursuant to the BSD 3-Clause License.
|
3
|
+
|
4
|
+
require "wsc_sdk"
|
5
|
+
require_relative "../client" # Get our client
|
6
|
+
require_relative "../helpers" # Include some helpers to make the code more direct
|
7
|
+
|
8
|
+
# Ensure the args passed in are present
|
9
|
+
arguments = ask_for_arguments(__FILE__, transcoder_id: nil, output_id: nil, output_stream_target_id: nil, stream_target_id: nil)
|
10
|
+
|
11
|
+
# Extract some data into convenience variables
|
12
|
+
transcoders = $client.transcoders
|
13
|
+
transcoder_id = arguments[0]
|
14
|
+
output_id = arguments[1]
|
15
|
+
output_stream_target_id = arguments[2]
|
16
|
+
stream_target_id = arguments[3]
|
17
|
+
|
18
|
+
# Request the specific transcoder
|
19
|
+
transcoder = transcoders.find(transcoder_id)
|
20
|
+
|
21
|
+
# Handle an API error (in the helpers.rb file)
|
22
|
+
handle_api_error(transcoder, "There was an error retrieving the transcoder") unless transcoder.success?
|
23
|
+
|
24
|
+
# Request the specific output
|
25
|
+
output = transcoder.outputs.find(output_id)
|
26
|
+
|
27
|
+
# Handle an API error (in the helpers.rb file)
|
28
|
+
handle_api_error(output, "There was an error retrieving the output") unless transcoder.success?
|
29
|
+
|
30
|
+
output_stream_target = output.output_stream_targets.find(output_stream_target_id)
|
31
|
+
|
32
|
+
# Handle an API error (in the helpers.rb file)
|
33
|
+
handle_api_error(output_stream_target, "There was an error retrieving the output stream target") unless output_stream_target.success?
|
34
|
+
|
35
|
+
|
36
|
+
# Update the stream target id
|
37
|
+
output_stream_target.stream_target_id = stream_target_id
|
38
|
+
|
39
|
+
# Make sure the output is valid
|
40
|
+
unless output_stream_target.valid?
|
41
|
+
puts "Invalid Output Stream Target:"
|
42
|
+
output.errors.each do |field, message|
|
43
|
+
puts " - #{field}: #{message}"
|
44
|
+
end
|
45
|
+
exit
|
46
|
+
end
|
47
|
+
|
48
|
+
# Save the output stream target
|
49
|
+
saved = output_stream_target.save
|
50
|
+
|
51
|
+
# Handle an API error (in the helpers.rb file)
|
52
|
+
handle_api_error(saved, "There was an error updating the output stream target") unless saved.success?
|
53
|
+
|
54
|
+
# We've successfully saved the output then output some output about the
|
55
|
+
# output
|
56
|
+
output_model_attributes(output_stream_target, "Output Stream Target: #{output_stream_target.id}")
|
@@ -0,0 +1,49 @@
|
|
1
|
+
####> This code and all components © 2015 – 2019 Wowza Media Systems, LLC. All rights reserved.
|
2
|
+
####> This code is licensed pursuant to the BSD 3-Clause License.
|
3
|
+
|
4
|
+
require "wsc_sdk"
|
5
|
+
require_relative "../client" # Get our client
|
6
|
+
require_relative "../helpers" # Include some helpers to make the code more direct
|
7
|
+
|
8
|
+
# Ensure the args passed in are present.
|
9
|
+
arguments = ask_for_arguments(__FILE__, transcoder_id: nil)
|
10
|
+
|
11
|
+
# Extract some data into convenience variables
|
12
|
+
transcoders = $client.transcoders
|
13
|
+
transcoder_id = arguments[0]
|
14
|
+
output_id = arguments[1]
|
15
|
+
|
16
|
+
# Request the specific transcoder
|
17
|
+
transcoder = transcoders.find(transcoder_id)
|
18
|
+
|
19
|
+
# Handle an API error (in the helpers.rb file)
|
20
|
+
handle_api_error(transcoder, "There was an error retrieving the transcoder") unless transcoder.success?
|
21
|
+
|
22
|
+
# Build a Full HD output using a pre-defined template data, and modifying a
|
23
|
+
# few values
|
24
|
+
output_data = WscSdk::Templates::Output.full_hd(
|
25
|
+
audio_bitrate: 256,
|
26
|
+
video_bitrate: 8000
|
27
|
+
)
|
28
|
+
|
29
|
+
# Build a new instance of the output object, and use
|
30
|
+
output = transcoder.outputs.build(output_data)
|
31
|
+
|
32
|
+
# Make sure the output is valid
|
33
|
+
unless output.valid?
|
34
|
+
puts "Invalid Output:"
|
35
|
+
output.errors.each do |field, message|
|
36
|
+
puts " - #{field}: #{message}"
|
37
|
+
end
|
38
|
+
exit
|
39
|
+
end
|
40
|
+
|
41
|
+
# Get the results of saving the output
|
42
|
+
saved = output.save
|
43
|
+
|
44
|
+
# Handle an API error (in the helpers.rb file)
|
45
|
+
handle_api_error(saved, "There was an error creating the output") unless saved.success?
|
46
|
+
|
47
|
+
# We've successfully saved the output then output some output about the
|
48
|
+
# output
|
49
|
+
output_model_attributes(output, "Output: #{output.name}")
|