dragonfly_video 0.3.2 → 0.3.3

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: d46415cc5ab3f68559a92127f8ac8209b455ae37dd8942932c59469a299af223
4
- data.tar.gz: f31e5289513f08e42962f7be5f4ea2d64e8702b5f291d12dc0397d003dbed1d0
3
+ metadata.gz: 886d29837119e7414795e1d16c2bbc8e0b020c0a59d3f0f03e287f37e694a76e
4
+ data.tar.gz: dc12f2e5ec9f484da4d7e8067fa6e76f312e138ab13a280eb93834dc4030eee7
5
5
  SHA512:
6
- metadata.gz: '08a4ac28b7cfb5a710bbb8ebddaba1bdddce771924023d87feead8d9ad1a97cbb39fada5cb473bd4e5132c3d4f64c9a3869e02e80efbca50405aa410a3ff3449'
7
- data.tar.gz: c406c948ec06282c44117168aa2e531fec7663f76c2ca156bb2076c769d6353aac45220c73684b9ed51b3e45371b0dab540ed6f63dcbd3e828637a67ace5ed3f
6
+ metadata.gz: 5bedc5845d418641c73cb59d54104b2356216704f35f210281052e157eb2cabb1348285ad62debec70e3be639d3ce4dc704599341a55bb1a088e0287c23b8d16
7
+ data.tar.gz: 0c8653b452f6905802132f12f48417203a895610df17523e0a8c08f2f2c8e62fc9667d7d95bec7ae163b3dde020e4f998d1d85ed1a7018e99bd74d2f8883c64d
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 0.4.0
4
+
5
+ * Added profile option to `Optimize` processor
6
+
3
7
  ## 0.3.2
4
8
 
5
9
  * Added `Optimize` processor
data/README.md CHANGED
@@ -74,6 +74,22 @@ Generates a screenshot of the video's first frame:
74
74
  video.screenshot
75
75
  ```
76
76
 
77
+ ### `remove_audio`
78
+
79
+ Removes audio from the video:
80
+
81
+ ```ruby
82
+ video.remove_audio
83
+ ```
84
+
85
+ ### `optimize`
86
+
87
+ Optimizes the video based on predefined profiles: `:streaming`, `:archive`, `:mobile` or `:default`
88
+
89
+ ```ruby
90
+ video.optimize
91
+ ```
92
+
77
93
  ## Contributing
78
94
 
79
95
  1. Fork it ( https://github.com/asgerb/dragonfly_video/fork )
@@ -1,5 +1,3 @@
1
- # IMPORTANT: See https://github.com/streamio/streamio-ffmpeg
2
- # require 'streamio-ffmpeg'
3
1
  require_relative "base_processor"
4
2
 
5
3
  module DragonflyVideo
@@ -7,8 +5,45 @@ module DragonflyVideo
7
5
  class Optimize < BaseProcessor
8
6
  def call(content, options = {})
9
7
  raise "optimize only supports mp4" unless content.ext == "mp4"
8
+
9
+ profile = options.fetch(:profile, :default).to_sym
10
+
11
+ case profile
12
+ when :streaming
13
+ crf = 26
14
+ maxrate = "4000k"
15
+ bufsize = "8000k"
16
+ gop = 96
17
+ profile_v = "main"
18
+ preset = "fast"
19
+ when :archive
20
+ crf = 18
21
+ maxrate = nil
22
+ bufsize = nil
23
+ gop = nil
24
+ profile_v = "high"
25
+ preset = "slow"
26
+ when :mobile
27
+ crf = 28
28
+ maxrate = "1500k"
29
+ bufsize = "3000k"
30
+ gop = 48
31
+ profile_v = "baseline"
32
+ preset = "fast"
33
+ else # Default
34
+ crf = 24
35
+ maxrate = nil
36
+ bufsize = nil
37
+ gop = nil
38
+ profile_v = "main"
39
+ preset = "medium"
40
+ end
41
+
42
+ maxrate_option = maxrate ? "-maxrate #{maxrate} -bufsize #{bufsize}" : ""
43
+ gop_option = gop ? "-g #{gop}" : ""
44
+
10
45
  content.shell_update do |old_path, new_path|
11
- "#{FFMPEG_COMMAND} -i #{old_path} -vcodec libx264 -pix_fmt yuv420p -profile:v baseline -level 3 -y #{new_path}"
46
+ "#{FFMPEG_COMMAND} -y -i #{old_path} #{gop_option} -map_metadata -1 -c:a aac -c:v libx264 -crf #{crf} -preset #{preset} -profile:v #{profile_v} -pix_fmt yuv420p -movflags +faststart -vf 'scale=trunc(iw/2)*2:trunc(ih/2)*2' #{maxrate_option} #{new_path}"
12
47
  end
13
48
  end
14
49
  end
@@ -1,3 +1,3 @@
1
1
  module DragonflyVideo
2
- VERSION = "0.3.2"
2
+ VERSION = "0.3.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dragonfly_video
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Asger Behncke Jacobsen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-01-28 00:00:00.000000000 Z
11
+ date: 2025-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dragonfly