rairtame 1.0.0 → 1.0.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 +4 -4
- data/README.md +2 -0
- data/bin/rairtame +16 -9
- data/lib/rairtame/client.rb +64 -17
- data/lib/rairtame/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9c0b4924eaef60d4bfca86a321c3012f5cf1a869
|
4
|
+
data.tar.gz: d60ff3d8e1add80c089c6844953b86847674f976
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 45492f65d282fb1a0cb6b6d427990987c01a67673f60d1bc22458356e00bbe7981e2cb06561b8afc2f838c7689e586dfd7de47e3e2689702031589b90e37328a
|
7
|
+
data.tar.gz: ac7e7fb49617cb545bbe1627ea0ce7d0c5111fa74bf91436d58b6cffe68dd2d92f7fdec34403d13486749880389846336d6687114f4b0bd3f96fdda1eecdfe4f
|
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# Rairtame
|
2
2
|
|
3
|
+
[](http://badge.fury.io/rb/rairtame)
|
4
|
+
|
3
5
|
Rairtame is a library and CLI utility to interact with the `airtame-streamer` JSON-RPC API.
|
4
6
|
|
5
7
|
It allows to easily control the `airtame-streamer` daemon, which is in charge of capturing and streaming video to an [AIRTAME dongle](http://airtame.com).
|
data/bin/rairtame
CHANGED
@@ -93,17 +93,24 @@ module Rairtame
|
|
93
93
|
:method => :buffer=
|
94
94
|
},
|
95
95
|
:fluent => {
|
96
|
-
:short => 'Enable or disable fluent video',
|
97
|
-
:long => 'Enables or disables the fluent video
|
96
|
+
:short => 'Enable or disable fluent video playback',
|
97
|
+
:long => 'Enables or disables the fluent video playback (jitterbuffer)',
|
98
98
|
:arg => 'on/off',
|
99
99
|
:allowed => ['on', 'off'],
|
100
|
-
:method => :video_jitterbuffer=
|
100
|
+
:method => :video_jitterbuffer=
|
101
101
|
},
|
102
|
-
:
|
103
|
-
:short => '
|
104
|
-
:long => '
|
102
|
+
:reliable => {
|
103
|
+
:short => 'Enable or disable reliability',
|
104
|
+
:long => 'Enables or disables the reliable transport option',
|
105
|
+
:arg => 'on/off',
|
106
|
+
:allowed => ['on', 'off'],
|
107
|
+
:method => :reliable_transport=
|
108
|
+
},
|
109
|
+
:status => {
|
110
|
+
:short => 'Show streamer\'s status',
|
111
|
+
:long => 'Prints streamer\'s status in a pretty way',
|
105
112
|
:arg => nil,
|
106
|
-
:method => :
|
113
|
+
:method => :pretty_status
|
107
114
|
}
|
108
115
|
}
|
109
116
|
|
@@ -113,14 +120,14 @@ module Rairtame
|
|
113
120
|
def setup
|
114
121
|
program_desc <<EOF
|
115
122
|
A Ruby interface to the airtame-streamer JSON-RPC API, which allows
|
116
|
-
to stream to an AIRTAME dongle.
|
123
|
+
to stream to an AIRTAME dongle.
|
117
124
|
EOF
|
118
125
|
|
119
126
|
switch [:v, :verbose]
|
120
127
|
switch [:c, :color], :default_value => true
|
121
128
|
flag [:streamer_host], :default_value => 'localhost'
|
122
129
|
flag [:config_file]
|
123
|
-
|
130
|
+
|
124
131
|
pre do |global_options, command, options, args|
|
125
132
|
@client = Rairtame::Client.new(global_options)
|
126
133
|
String.disable_colorization = !global_options[:color]
|
data/lib/rairtame/client.rb
CHANGED
@@ -82,13 +82,52 @@ module Rairtame
|
|
82
82
|
rpc_call(:closeStreamer)
|
83
83
|
end
|
84
84
|
|
85
|
-
def
|
85
|
+
def status
|
86
86
|
rpc_call(:getState)
|
87
87
|
end
|
88
|
-
|
89
|
-
|
90
|
-
|
88
|
+
alias :state :status
|
89
|
+
|
90
|
+
def pretty_status
|
91
|
+
puts
|
92
|
+
puts "AIRTAME status:"
|
93
|
+
puts "---------------"
|
94
|
+
state = rpc_call(:getState)['result']
|
95
|
+
if state['state'] == 'not initialized'
|
96
|
+
puts "Not initialized"
|
97
|
+
elsif state['current_mode']
|
98
|
+
mode_str = case state['current_mode']
|
99
|
+
when 0 then "video"
|
100
|
+
when 1 then "work"
|
101
|
+
when 2 then "present"
|
102
|
+
when 3 then "manual"
|
103
|
+
else "unknown"
|
104
|
+
end
|
105
|
+
fluent = state['remote_settings']['video_jb_flags'] == '1' ? "yes" : "no"
|
106
|
+
reliable = state['reliable_transport'] == '1' ? "yes" : "no"
|
107
|
+
puts "Mode: #{mode_str}"
|
108
|
+
puts "FPS: #{state['video_fps']}"
|
109
|
+
puts "Reliability: #{reliable}"
|
110
|
+
puts "Fluent playback: #{fluent}"
|
111
|
+
puts "Clients:"
|
112
|
+
puts " -- No clients connected" if state['clients'].empty?
|
113
|
+
state['clients'].each do |client|
|
114
|
+
c = client['channel']
|
115
|
+
str = "#{c['IP']}: "
|
116
|
+
str << "Sent #{(c['bytes_sent'] / 1024.0 / 1024.0).round(2)} MB. "
|
117
|
+
str << "Recv: #{(c['bytes_received'] / 1024.0).round(2)} KB. "
|
118
|
+
str << "Packet loss: #{c['packet_loss'].to_f.round(2)}. "
|
119
|
+
str << "Avg latency: #{c['avg_latency']}"
|
120
|
+
puts " -- #{str}"
|
121
|
+
end
|
122
|
+
state
|
123
|
+
else
|
124
|
+
puts "Unkown response"
|
125
|
+
end
|
126
|
+
puts
|
127
|
+
puts "(run with -v to see the raw response)"
|
128
|
+
state
|
91
129
|
end
|
130
|
+
alias :pretty_state :pretty_status
|
92
131
|
|
93
132
|
def framerate=(v)
|
94
133
|
rpc_call(:setStreamerSettings, 'framerate', v.to_s)
|
@@ -118,20 +157,12 @@ module Rairtame
|
|
118
157
|
|
119
158
|
def video=(v)
|
120
159
|
# TODO: Read av flags first and keep the audio
|
121
|
-
|
122
|
-
when "on" then "1"
|
123
|
-
when "off" then "0"
|
124
|
-
end
|
125
|
-
rpc_call(:setStreamerSettings, 'av_flags', value)
|
160
|
+
rpc_call(:setStreamerSettings, 'av_flags', on_off_to_1_0(v))
|
126
161
|
end
|
127
162
|
|
128
163
|
# fluent video
|
129
164
|
def video_jitterbuffer=(v)
|
130
|
-
|
131
|
-
when "on" then "1"
|
132
|
-
when "off" then "0"
|
133
|
-
end
|
134
|
-
rpc_call(:setStreamerSettings, 'video_jb_flags', value)
|
165
|
+
rpc_call(:setStreamerSettings, 'video_jb_flags', on_off_to_1_0(v))
|
135
166
|
end
|
136
167
|
|
137
168
|
# unused
|
@@ -146,12 +177,28 @@ module Rairtame
|
|
146
177
|
end
|
147
178
|
|
148
179
|
def reliable_transport=(v)
|
149
|
-
|
150
|
-
|
180
|
+
rpc_call(:setStreamerSettings, 'reliable_transport',
|
181
|
+
on_off_to_true_false(v))
|
151
182
|
end
|
152
183
|
|
153
184
|
private
|
154
185
|
|
186
|
+
def on_off_to_1_0(value)
|
187
|
+
case value
|
188
|
+
when "off" then "0"
|
189
|
+
when "on" then "1"
|
190
|
+
else value
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
def on_off_to_true_false(value)
|
195
|
+
case value
|
196
|
+
when "off" then "false"
|
197
|
+
when "on" then "true"
|
198
|
+
else value
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
155
202
|
def log_command(method, params)
|
156
203
|
return unless @verbose
|
157
204
|
puts "Sending command: [#{method} | #{params}]"
|
@@ -160,7 +207,7 @@ module Rairtame
|
|
160
207
|
def log_response(r)
|
161
208
|
# log anyway
|
162
209
|
return unless @verbose
|
163
|
-
is_error =
|
210
|
+
is_error = Jsonrpctcp::Client.is_error?(r)
|
164
211
|
if is_error then warn "Received error:"
|
165
212
|
else puts "Received response:" end
|
166
213
|
pp r
|
data/lib/rairtame/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rairtame
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hector Sanjuan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|