dragonfly_video 0.3.1 → 0.3.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ba568943f68dccca5ac8a178c788d80c7a10a0ffe911345f99878617b7f07a98
4
- data.tar.gz: fcdce906a0d3d2889abb9d0a74c15715d362387f5b68c3518f557531eec75db7
3
+ metadata.gz: 886d29837119e7414795e1d16c2bbc8e0b020c0a59d3f0f03e287f37e694a76e
4
+ data.tar.gz: dc12f2e5ec9f484da4d7e8067fa6e76f312e138ab13a280eb93834dc4030eee7
5
5
  SHA512:
6
- metadata.gz: a71a987710287f503d72487ebd4a49ea2fb782e68b9e97c17842d18d8eeb6ce9bf9294726484716a9983b4822a2e4aebcb2f1e443048c899363812341fddf8f2
7
- data.tar.gz: e6ca81fbd475933bb2f26e46565cfe515b510c1fea22624bd02c7c474b4f1ad02f4b59bbda2638e438fd55bb75e9afa8f412b5fba83695fbd4c05287f197d389
6
+ metadata.gz: 5bedc5845d418641c73cb59d54104b2356216704f35f210281052e157eb2cabb1348285ad62debec70e3be639d3ce4dc704599341a55bb1a088e0287c23b8d16
7
+ data.tar.gz: 0c8653b452f6905802132f12f48417203a895610df17523e0a8c08f2f2c8e62fc9667d7d95bec7ae163b3dde020e4f998d1d85ed1a7018e99bd74d2f8883c64d
@@ -0,0 +1,25 @@
1
+ name: Test
2
+ on:
3
+ pull_request:
4
+ branches: ["master"]
5
+ push:
6
+ branches: ["master"]
7
+ jobs:
8
+ test:
9
+ runs-on: ubuntu-latest
10
+ strategy:
11
+ matrix:
12
+ ruby: ['2.1', '3.2', '3.3']
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+ - name: Install dependencies
16
+ run: |
17
+ sudo apt-get clean
18
+ sudo apt-get update
19
+ sudo apt-get install -y ffmpeg
20
+ - uses: ruby/setup-ruby@v1
21
+ with:
22
+ ruby-version: ${{ matrix.ruby }}
23
+ bundler-cache: true
24
+ - name: Run tests
25
+ run: bundle exec rake
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 0.4.0
4
+
5
+ * Added profile option to `Optimize` processor
6
+
7
+ ## 0.3.2
8
+
9
+ * Added `Optimize` processor
10
+
3
11
  ## 0.3.1
4
12
 
5
13
  * Fixed `RemoveAudio` processor returning unreadable video
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,6 +1,7 @@
1
1
  require "dragonfly_video/analysers/video_properties"
2
2
  require "dragonfly_video/processors/screenshot"
3
3
  require "dragonfly_video/processors/remove_audio"
4
+ require "dragonfly_video/processors/optimize"
4
5
 
5
6
  class DragonflyVideo::Plugin
6
7
  def call(app, _opts = {})
@@ -16,6 +17,7 @@ class DragonflyVideo::Plugin
16
17
 
17
18
  app.add_processor :screenshot, DragonflyVideo::Processors::Screenshot.new
18
19
  app.add_processor :remove_audio, DragonflyVideo::Processors::RemoveAudio.new
20
+ app.add_processor :optimize, DragonflyVideo::Processors::Optimize.new
19
21
  end
20
22
  end
21
23
 
@@ -0,0 +1,51 @@
1
+ require_relative "base_processor"
2
+
3
+ module DragonflyVideo
4
+ module Processors
5
+ class Optimize < BaseProcessor
6
+ def call(content, options = {})
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
+
45
+ content.shell_update do |old_path, 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}"
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -1,3 +1,3 @@
1
1
  module DragonflyVideo
2
- VERSION = "0.3.1"
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.1
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-25 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
@@ -115,6 +115,7 @@ executables: []
115
115
  extensions: []
116
116
  extra_rdoc_files: []
117
117
  files:
118
+ - ".github/workflows/test.yml"
118
119
  - ".gitignore"
119
120
  - ".travis.yml"
120
121
  - CHANGELOG.md
@@ -130,6 +131,7 @@ files:
130
131
  - lib/dragonfly_video/analysers/video_properties.rb
131
132
  - lib/dragonfly_video/plugin.rb
132
133
  - lib/dragonfly_video/processors/base_processor.rb
134
+ - lib/dragonfly_video/processors/optimize.rb
133
135
  - lib/dragonfly_video/processors/remove_audio.rb
134
136
  - lib/dragonfly_video/processors/screenshot.rb
135
137
  - lib/dragonfly_video/version.rb