easyvideo_utils 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1f716119d3f6395b58b11b527de76f0ebd8d12ee5043b81e52a5cc65e01dcf48
4
- data.tar.gz: dc04db29e024f0002f794e019ac7ea30c00af5adc7b0c434b6e474fcc19c4556
3
+ metadata.gz: a91b8ba51bbff313106e09945d19827ebaa2c462d97b3bf0102eaa07b2112e60
4
+ data.tar.gz: ae94c800fd3b1dfc8f60533845479d7b1b51d7828909172638159adf189b8d9a
5
5
  SHA512:
6
- metadata.gz: 8bad1f722e1dc80c47e741ecac899638875ae239d72d6e28f178fb2f4abc19f0974890d1f9603c9f55cb67cc337b47562885d5456c21df9e99879834e3482f5e
7
- data.tar.gz: a18e5fed955059d95a8e59be0d6250e662a594948786bd1ede49a1ccd19dbfaf6cd85690189cf3d6bb10360a2d0666572b299715b413e3dc9873899c24443f74
6
+ metadata.gz: 35d68326073bf0963ce7d3d5412315697ca154a9d1c3fd9194eb076ec057f8f0260468f6b7685b796b3d39ba05d09408d8738e1142b397e682d67fd8886485ba
7
+ data.tar.gz: 80ed22acbfa4ae9991480c0b9af42d5cf01fcc0e964fc8ce659c17aaf1d2daabb285e1c2a7acd025446662a34a9e412f58ce6a5ce1ccecfcd221d2a47d994f51
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -39,11 +39,16 @@ class EasyVideoUtils
39
39
  * concat # concatenate 2 or more videos
40
40
  * convert # alias for transcode
41
41
  * capture # capture the desktop at 1024x768
42
+ * extract_images # Extracts images at 1 FPS by default
42
43
  * play # plays the video using mplayer
43
44
  * preview # plays the video using ffplay
44
45
  * record # alias for capture
46
+ * remove_audio # removes the audio track from a video
47
+ * remove_video # removes the video track from a video. Output file would be an mp3.
45
48
  * resize # resize to 720p
46
49
  * scale # alias for resize
50
+ * slowdown # slows a viedo down. Defaults to x2 (half-speed)
51
+ * speedup # speed a video up. Defaults to x2 (twice as fast)
47
52
  * transcode # converts 1 video format to another e.g. avi-> mp4
48
53
  * trim # trims the beginning and ending of a video in hms format e.g. 1m 3s
49
54
  ".strip.lines.map {|x| x[/(?<=\* ).*/]}.sort
@@ -52,7 +57,13 @@ class EasyVideoUtils
52
57
  def initialize(vid_in=nil, vid_out='video.mp4', out: vid_out,
53
58
  working_dir: '/tmp', debug: false)
54
59
 
55
- @file_in, @file_out, @working_dir, @debug = vid_in, out, working_dir, debug
60
+ @file_out, @working_dir, @debug = out, working_dir, debug
61
+
62
+ if vid_in.is_a? String then
63
+ @file_in = vid_in
64
+ elsif vid_in.is_a? Array
65
+ @files_in = vid_in
66
+ end
56
67
 
57
68
  end
58
69
 
@@ -90,7 +101,7 @@ class EasyVideoUtils
90
101
  # * Video must be of same format and codec
91
102
  # * Only video with no audio is currently supported
92
103
  #
93
- def concat(files=[], show: false)
104
+ def concat(files=@files_in, show: false)
94
105
 
95
106
  inputs = files.map {|file| "-i #{file}"}.join(' ')
96
107
  filter = files.map.with_index {|file,i| "[%s:v]" % i}.join(' ')
@@ -123,6 +134,18 @@ class EasyVideoUtils
123
134
 
124
135
  end
125
136
 
137
+ # Extract images from the video
138
+ #
139
+ # switches used:
140
+ #
141
+ # -r – Set the frame rate. I.e the number of frames to be extracted into images per second.
142
+ # -f – Indicates the output format i.e image format in our case.
143
+ #
144
+ def extract_images(show: false, ext: '.png', rate: 1)
145
+ command = "ffmpeg -i #{@file_in} -r #{rate} -f image2 image-%2d#{ext}"
146
+ run command, show
147
+ end
148
+
126
149
  def play(show: false)
127
150
  command = "mplayer #{@file_out}"
128
151
  run command, show
@@ -131,15 +154,59 @@ class EasyVideoUtils
131
154
  def preview(show: false)
132
155
  command = "ffplay #{@file_out}"
133
156
  run command, show
134
- end
157
+ end
158
+
159
+ def remove_audio(show: false)
160
+ command = "ffmpeg -i #{@file_in} -an #{@file_out}"
161
+ run command, show
162
+ end
163
+
164
+ # removes the video track which leaves the audio track
165
+ # e.g. ffmpeg -i input.mp4 -vn output.mp3
166
+ #
167
+ def remove_video(show: false)
168
+ command = "ffmpeg -i #{@file_in} -vn #{@file_out}"
169
+ run command, show
170
+ end
135
171
 
136
172
  # Resize avi to 720p
137
173
  #
138
- def resize(show: false)
139
- `ffmpeg -i #{@file_in} -vf scale="720:-1" #{@file_out} -y`
174
+ def resize(scale='720', show: false)
175
+ command = "ffmpeg -i #{@file_in} -vf scale=\"#{scale}:-1\" #{@file_out} -y"
176
+ run command, show
140
177
  end
141
178
 
142
179
  alias scale resize
180
+
181
+ # slow down a video
182
+ #
183
+ # note: presentation timestamp (PTS)
184
+ # 'x2' = half speed; 'x4' = quarter speed
185
+
186
+ def slowdown(speed=:x2, show: false)
187
+
188
+ factor = {x1_5: 1.5, x2: 2.0, x4: 4.0}[speed.to_s.sub('.','_').to_sym]
189
+ command = "ffmpeg -i #{@file_in} -vf \"setpts=#{factor}*PTS\" " +
190
+ "#{@file_out} -y"
191
+ run command, show
192
+
193
+ end
194
+
195
+ # speed up a video
196
+ #
197
+ # note: presentation timestamp (PTS)
198
+ # 'x2' = double speed; 'x4' = quadruple speed
199
+
200
+ def speedup(speed=:x2, show: false)
201
+
202
+ h = {x1_5: 0.75, x2: 0.5, x4: 0.25, x6: 0.166, x8: 0.125, x16: 0.0625,
203
+ x32: 0.03125, x64: 0.015625}
204
+ factor = h[speed.to_s.sub('.','_').to_sym]
205
+ command = "ffmpeg -i #{@file_in} -vf \"setpts=#{factor}*PTS\" " +
206
+ "#{@file_out} -y"
207
+ run command, show
208
+
209
+ end
143
210
 
144
211
  # Transcodes avi -> mp4
145
212
  #
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easyvideo_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
metadata.gz.sig CHANGED
Binary file