ffmprb 0.11.3 → 0.12.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/Dockerfile +18 -0
- data/Gemfile +8 -1
- data/Gemfile.lock +121 -0
- data/README.md +65 -21
- data/TODO.md +0 -0
- data/bin/dev +12 -0
- data/bin/test +13 -0
- data/coverage/assets/0.10.0/application.css +799 -0
- data/coverage/assets/0.10.0/application.js +1707 -0
- data/coverage/assets/0.10.0/colorbox/border.png +0 -0
- data/coverage/assets/0.10.0/colorbox/controls.png +0 -0
- data/coverage/assets/0.10.0/colorbox/loading.gif +0 -0
- data/coverage/assets/0.10.0/colorbox/loading_background.png +0 -0
- data/coverage/assets/0.10.0/favicon_green.png +0 -0
- data/coverage/assets/0.10.0/favicon_red.png +0 -0
- data/coverage/assets/0.10.0/favicon_yellow.png +0 -0
- data/coverage/assets/0.10.0/loading.gif +0 -0
- data/coverage/assets/0.10.0/magnify.png +0 -0
- data/coverage/assets/0.10.0/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/coverage/assets/0.10.0/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/coverage/assets/0.10.0/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/coverage/assets/0.10.0/smoothness/images/ui-icons_222222_256x240.png +0 -0
- data/coverage/assets/0.10.0/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
- data/coverage/assets/0.10.0/smoothness/images/ui-icons_454545_256x240.png +0 -0
- data/coverage/assets/0.10.0/smoothness/images/ui-icons_888888_256x240.png +0 -0
- data/coverage/assets/0.10.0/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/coverage/assets/0.10.2/application.css +799 -0
- data/coverage/assets/0.10.2/application.js +1707 -0
- data/coverage/assets/0.10.2/colorbox/border.png +0 -0
- data/coverage/assets/0.10.2/colorbox/controls.png +0 -0
- data/coverage/assets/0.10.2/colorbox/loading.gif +0 -0
- data/coverage/assets/0.10.2/colorbox/loading_background.png +0 -0
- data/coverage/assets/0.10.2/favicon_green.png +0 -0
- data/coverage/assets/0.10.2/favicon_red.png +0 -0
- data/coverage/assets/0.10.2/favicon_yellow.png +0 -0
- data/coverage/assets/0.10.2/loading.gif +0 -0
- data/coverage/assets/0.10.2/magnify.png +0 -0
- data/coverage/assets/0.10.2/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/coverage/assets/0.10.2/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/coverage/assets/0.10.2/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/coverage/assets/0.10.2/smoothness/images/ui-icons_222222_256x240.png +0 -0
- data/coverage/assets/0.10.2/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
- data/coverage/assets/0.10.2/smoothness/images/ui-icons_454545_256x240.png +0 -0
- data/coverage/assets/0.10.2/smoothness/images/ui-icons_888888_256x240.png +0 -0
- data/coverage/assets/0.10.2/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/coverage/assets/0.12.2/DataTables-1.10.20/images/sort_asc.png +0 -0
- data/coverage/assets/0.12.2/DataTables-1.10.20/images/sort_asc_disabled.png +0 -0
- data/coverage/assets/0.12.2/DataTables-1.10.20/images/sort_both.png +0 -0
- data/coverage/assets/0.12.2/DataTables-1.10.20/images/sort_desc.png +0 -0
- data/coverage/assets/0.12.2/DataTables-1.10.20/images/sort_desc_disabled.png +0 -0
- data/coverage/assets/0.12.2/application.css +1 -0
- data/coverage/assets/0.12.2/application.js +7 -0
- data/coverage/assets/0.12.2/colorbox/border.png +0 -0
- data/coverage/assets/0.12.2/colorbox/controls.png +0 -0
- data/coverage/assets/0.12.2/colorbox/loading.gif +0 -0
- data/coverage/assets/0.12.2/colorbox/loading_background.png +0 -0
- data/coverage/assets/0.12.2/favicon_green.png +0 -0
- data/coverage/assets/0.12.2/favicon_red.png +0 -0
- data/coverage/assets/0.12.2/favicon_yellow.png +0 -0
- data/coverage/assets/0.12.2/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/coverage/assets/0.12.2/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/coverage/assets/0.12.2/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/coverage/assets/0.12.2/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/coverage/assets/0.12.2/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/coverage/assets/0.12.2/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/coverage/assets/0.12.2/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/coverage/assets/0.12.2/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/coverage/assets/0.12.2/images/ui-icons_222222_256x240.png +0 -0
- data/coverage/assets/0.12.2/images/ui-icons_2e83ff_256x240.png +0 -0
- data/coverage/assets/0.12.2/images/ui-icons_454545_256x240.png +0 -0
- data/coverage/assets/0.12.2/images/ui-icons_888888_256x240.png +0 -0
- data/coverage/assets/0.12.2/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/coverage/assets/0.12.2/loading.gif +0 -0
- data/coverage/assets/0.12.2/magnify.png +0 -0
- data/coverage/assets/0.12.3/DataTables-1.10.20/images/sort_asc.png +0 -0
- data/coverage/assets/0.12.3/DataTables-1.10.20/images/sort_asc_disabled.png +0 -0
- data/coverage/assets/0.12.3/DataTables-1.10.20/images/sort_both.png +0 -0
- data/coverage/assets/0.12.3/DataTables-1.10.20/images/sort_desc.png +0 -0
- data/coverage/assets/0.12.3/DataTables-1.10.20/images/sort_desc_disabled.png +0 -0
- data/coverage/assets/0.12.3/application.css +1 -0
- data/coverage/assets/0.12.3/application.js +7 -0
- data/coverage/assets/0.12.3/colorbox/border.png +0 -0
- data/coverage/assets/0.12.3/colorbox/controls.png +0 -0
- data/coverage/assets/0.12.3/colorbox/loading.gif +0 -0
- data/coverage/assets/0.12.3/colorbox/loading_background.png +0 -0
- data/coverage/assets/0.12.3/favicon_green.png +0 -0
- data/coverage/assets/0.12.3/favicon_red.png +0 -0
- data/coverage/assets/0.12.3/favicon_yellow.png +0 -0
- data/coverage/assets/0.12.3/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/coverage/assets/0.12.3/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/coverage/assets/0.12.3/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/coverage/assets/0.12.3/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/coverage/assets/0.12.3/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/coverage/assets/0.12.3/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/coverage/assets/0.12.3/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/coverage/assets/0.12.3/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/coverage/assets/0.12.3/images/ui-icons_222222_256x240.png +0 -0
- data/coverage/assets/0.12.3/images/ui-icons_2e83ff_256x240.png +0 -0
- data/coverage/assets/0.12.3/images/ui-icons_454545_256x240.png +0 -0
- data/coverage/assets/0.12.3/images/ui-icons_888888_256x240.png +0 -0
- data/coverage/assets/0.12.3/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/coverage/assets/0.12.3/loading.gif +0 -0
- data/coverage/assets/0.12.3/magnify.png +0 -0
- data/coverage/index.html +47324 -0
- data/exp/EXP +7 -0
- data/exp/av-cut-mp4you60.ffmprb +10 -0
- data/exp/docker-compose.yml +9 -0
- data/exp/gop-cut-cat-you60 +141 -0
- data/exp/present/Dockerfile +13 -0
- data/exp/present/Gemfile +3 -0
- data/exp/present/Gemfile.lock +22 -0
- data/exp/present/bin/up-deps +8 -0
- data/exp/present/docker-compose.yml +21 -0
- data/exp/present/exp/present +10 -0
- data/exp/present/exp/present.rb +37 -0
- data/exp/run +9 -0
- data/exp/stitch2.ffmprb +5 -0
- data/exp/unzip-mp4you60 +58 -0
- data/exp/youtubby/Dockerfile +13 -0
- data/exp/youtubby/Gemfile +7 -0
- data/exp/youtubby/Gemfile.lock +73 -0
- data/exp/youtubby/README.md +21 -0
- data/exp/youtubby/bin/up-deps +8 -0
- data/exp/youtubby/docker-compose.yml +20 -0
- data/exp/youtubby/exp/gop-raw-cut-you-HD60 +13 -0
- data/exp/youtubby/exp/gop-raw-cut-you-HD60.rb +230 -0
- data/exp/youtubby/exp/media-upload +13 -0
- data/exp/youtubby/exp/tmp/CURRENT +2 -0
- data/exp/youtubby/google_youtube.rb +39 -0
- data/exp/youtubby/old-ul.py +181 -0
- data/exp/youtubby/old-ul.rb +87 -0
- data/exp/youtubby/py-Dockerfile +11 -0
- data/exp/youtubby/py-docker-compose.yml +13 -0
- data/exp/youtubby/requirements.txt +19 -0
- data/exp/youtubby/upload.rb +38 -0
- data/exp/zip-cut-mp4you60 +42 -0
- data/exp/zip2mp4k60 +27 -0
- data/ffmprb.gemspec +34 -14
- data/lib/defaults.rb +6 -6
- data/lib/ffmprb/execution.rb +1 -1
- data/lib/ffmprb/file/sample.rb +2 -2
- data/lib/ffmprb/file/threaded_buffered.rb +4 -4
- data/lib/ffmprb/file.rb +20 -20
- data/lib/ffmprb/filter.rb +100 -61
- data/lib/ffmprb/find_silence.rb +5 -2
- data/lib/ffmprb/process/input/chain_base.rb +6 -4
- data/lib/ffmprb/process/input/channeled.rb +1 -1
- data/lib/ffmprb/process/input/cropped.rb +4 -1
- data/lib/ffmprb/process/input/cut.rb +2 -2
- data/lib/ffmprb/process/input/looping.rb +11 -16
- data/lib/ffmprb/process/input/loud.rb +1 -1
- data/lib/ffmprb/process/input/paced.rb +35 -0
- data/lib/ffmprb/process/input/postprocessed.rb +29 -0
- data/lib/ffmprb/process/input/reversed.rb +29 -0
- data/lib/ffmprb/process/input.rb +7 -3
- data/lib/ffmprb/process/output.rb +45 -29
- data/lib/ffmprb/process.rb +8 -9
- data/lib/ffmprb/util/proc_vis.rb +5 -4
- data/lib/ffmprb/util/thread.rb +13 -11
- data/lib/ffmprb/util/threaded_io_buffer.rb +25 -22
- data/lib/ffmprb/util.rb +38 -13
- data/lib/ffmprb/version.rb +2 -2
- data/lib/ffmprb.rb +8 -5
- data/tmp/exp/docker-compose.yml +9 -0
- data/tmp/exp/src/SAM_3132.MP4 +0 -0
- data/tmp/ffmprb-0.11.4.gem +0 -0
- data/tmp/output.rb +383 -0
- metadata +159 -139
- data/.gitignore +0 -10
- data/.rspec +0 -4
- data/.ruby-version +0 -1
- data/.travis.yml +0 -3
- data/circle.yml +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 9dfd9dfa0902b6fa0f7e18655e385c11f968dfc73c51bc86a0828befffcdd039
|
4
|
+
data.tar.gz: 5c4721cbc6003848150dd8600939bf973dbd165b23177faeb38f1e7ed6444425
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2317d3d31ea09d3eae1dcd999a141431cf6fd8394c322dc407c1f5088763d1e566863fe6d012b0b92d1920fb25ff8bb9bcace1b508ac3f2b13ab5454c380b3e8
|
7
|
+
data.tar.gz: 2e40d1a392823480757fe7e045a6ca1412f05f4af09ab5cf2d1e8133e066efb96a2d538dc67f2bf6747a1313917ca287554800c02ce97f92041d206a0febf7c4
|
data/Dockerfile
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
FROM debian:bullseye
|
2
|
+
|
3
|
+
RUN bash -ec 'apt update; apt -y install ruby-all-dev=1:2.7+2 ffmpeg=7:4.3.5-0+deb11u1 sox=14.4.2+git20190427-2 build-essential=12.9 libmagickwand-dev=8:6.9.11.60+dfsg-1.3 git=1:2.30.2-1 pkg-config=0.29.2-1'
|
4
|
+
RUN gem install bundler -v '~> 2.0'
|
5
|
+
|
6
|
+
WORKDIR /ffmprb
|
7
|
+
|
8
|
+
COPY Gemfile Gemfile.lock ffmprb.gemspec ./
|
9
|
+
COPY lib/ffmprb/version.rb ./lib/ffmprb/version.rb
|
10
|
+
RUN bundle install
|
11
|
+
COPY . .
|
12
|
+
RUN gem build ffmprb.gemspec
|
13
|
+
RUN gem install *.gem
|
14
|
+
|
15
|
+
# TODO you know, whatever...
|
16
|
+
WORKDIR /
|
17
|
+
|
18
|
+
ENTRYPOINT ["ffmprb"]
|
data/Gemfile
CHANGED
@@ -3,4 +3,11 @@ source 'https://rubygems.org'
|
|
3
3
|
# Specify your gem's dependencies in ffmprb.gemspec
|
4
4
|
gemspec
|
5
5
|
|
6
|
-
gem '
|
6
|
+
gem 'byebug'
|
7
|
+
gem 'simplecov'
|
8
|
+
gem 'guard-rspec'
|
9
|
+
gem 'guard-bundler'
|
10
|
+
gem 'rake'
|
11
|
+
gem 'rmagick', '~> 4.1'
|
12
|
+
gem 'ruby-sox', '~> 0.0.3'
|
13
|
+
gem 'firebase', '~> 0.2.8'
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,121 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
ffmprb (0.12.1)
|
5
|
+
mkfifo (~> 0.1.1)
|
6
|
+
thor (~> 0.19.1)
|
7
|
+
|
8
|
+
GEM
|
9
|
+
remote: https://rubygems.org/
|
10
|
+
specs:
|
11
|
+
addressable (2.8.1)
|
12
|
+
public_suffix (>= 2.0.2, < 6.0)
|
13
|
+
byebug (11.1.3)
|
14
|
+
coderay (1.1.3)
|
15
|
+
diff-lcs (1.5.0)
|
16
|
+
docile (1.4.0)
|
17
|
+
faraday (2.7.2)
|
18
|
+
faraday-net_http (>= 2.0, < 3.1)
|
19
|
+
ruby2_keywords (>= 0.0.4)
|
20
|
+
faraday-net_http (3.0.2)
|
21
|
+
ffi (1.15.5)
|
22
|
+
firebase (0.2.8)
|
23
|
+
googleauth
|
24
|
+
httpclient (>= 2.5.3)
|
25
|
+
json
|
26
|
+
formatador (1.1.0)
|
27
|
+
googleauth (1.3.0)
|
28
|
+
faraday (>= 0.17.3, < 3.a)
|
29
|
+
jwt (>= 1.4, < 3.0)
|
30
|
+
memoist (~> 0.16)
|
31
|
+
multi_json (~> 1.11)
|
32
|
+
os (>= 0.9, < 2.0)
|
33
|
+
signet (>= 0.16, < 2.a)
|
34
|
+
guard (2.18.0)
|
35
|
+
formatador (>= 0.2.4)
|
36
|
+
listen (>= 2.7, < 4.0)
|
37
|
+
lumberjack (>= 1.0.12, < 2.0)
|
38
|
+
nenv (~> 0.1)
|
39
|
+
notiffany (~> 0.0)
|
40
|
+
pry (>= 0.13.0)
|
41
|
+
shellany (~> 0.0)
|
42
|
+
thor (>= 0.18.1)
|
43
|
+
guard-bundler (3.0.0)
|
44
|
+
bundler (>= 2.1, < 3)
|
45
|
+
guard (~> 2.2)
|
46
|
+
guard-compat (~> 1.1)
|
47
|
+
guard-compat (1.2.1)
|
48
|
+
guard-rspec (4.7.3)
|
49
|
+
guard (~> 2.1)
|
50
|
+
guard-compat (~> 1.1)
|
51
|
+
rspec (>= 2.99.0, < 4.0)
|
52
|
+
httpclient (2.8.3)
|
53
|
+
json (2.6.3)
|
54
|
+
jwt (2.6.0)
|
55
|
+
listen (3.7.1)
|
56
|
+
rb-fsevent (~> 0.10, >= 0.10.3)
|
57
|
+
rb-inotify (~> 0.9, >= 0.9.10)
|
58
|
+
lumberjack (1.2.8)
|
59
|
+
memoist (0.16.2)
|
60
|
+
method_source (1.0.0)
|
61
|
+
mkfifo (0.1.1)
|
62
|
+
multi_json (1.15.0)
|
63
|
+
nenv (0.3.0)
|
64
|
+
notiffany (0.1.3)
|
65
|
+
nenv (~> 0.1)
|
66
|
+
shellany (~> 0.0)
|
67
|
+
os (1.1.4)
|
68
|
+
pry (0.14.1)
|
69
|
+
coderay (~> 1.1)
|
70
|
+
method_source (~> 1.0)
|
71
|
+
public_suffix (5.0.1)
|
72
|
+
rake (13.0.6)
|
73
|
+
rb-fsevent (0.11.2)
|
74
|
+
rb-inotify (0.10.1)
|
75
|
+
ffi (~> 1.0)
|
76
|
+
rmagick (4.3.0)
|
77
|
+
rspec (3.12.0)
|
78
|
+
rspec-core (~> 3.12.0)
|
79
|
+
rspec-expectations (~> 3.12.0)
|
80
|
+
rspec-mocks (~> 3.12.0)
|
81
|
+
rspec-core (3.12.0)
|
82
|
+
rspec-support (~> 3.12.0)
|
83
|
+
rspec-expectations (3.12.1)
|
84
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
85
|
+
rspec-support (~> 3.12.0)
|
86
|
+
rspec-mocks (3.12.1)
|
87
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
88
|
+
rspec-support (~> 3.12.0)
|
89
|
+
rspec-support (3.12.0)
|
90
|
+
ruby-sox (0.0.3)
|
91
|
+
ruby2_keywords (0.0.5)
|
92
|
+
shellany (0.0.1)
|
93
|
+
signet (0.17.0)
|
94
|
+
addressable (~> 2.8)
|
95
|
+
faraday (>= 0.17.5, < 3.a)
|
96
|
+
jwt (>= 1.5, < 3.0)
|
97
|
+
multi_json (~> 1.10)
|
98
|
+
simplecov (0.21.2)
|
99
|
+
docile (~> 1.1)
|
100
|
+
simplecov-html (~> 0.11)
|
101
|
+
simplecov_json_formatter (~> 0.1)
|
102
|
+
simplecov-html (0.12.3)
|
103
|
+
simplecov_json_formatter (0.1.4)
|
104
|
+
thor (0.19.4)
|
105
|
+
|
106
|
+
PLATFORMS
|
107
|
+
ruby
|
108
|
+
|
109
|
+
DEPENDENCIES
|
110
|
+
byebug
|
111
|
+
ffmprb!
|
112
|
+
firebase (~> 0.2.8)
|
113
|
+
guard-bundler
|
114
|
+
guard-rspec
|
115
|
+
rake
|
116
|
+
rmagick (~> 4.1)
|
117
|
+
ruby-sox (~> 0.0.3)
|
118
|
+
simplecov
|
119
|
+
|
120
|
+
BUNDLED WITH
|
121
|
+
2.1.4
|
data/README.md
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
# ffmprb
|
2
2
|
[![Gem Version](https://badge.fury.io/rb/ffmprb.svg)](http://badge.fury.io/rb/ffmprb)
|
3
|
-
|
4
|
-
## your audio/video montage pal, based on [ffmpeg](https://ffmpeg.org)
|
3
|
+
## your audio/video manipulation pal, based on [ffmpeg](https://ffmpeg.org)
|
5
4
|
|
6
5
|
A video and audio composing DSL (Damn-Simple Language) and a micro-engine for ffmpeg and ffriends (with CLI)
|
7
6
|
|
8
|
-
|
7
|
+
Any script-able person can manipulate video/audio media -- or automate such processing -- with ffmprb.
|
9
8
|
|
10
|
-
|
9
|
+
_ATTENTION_
|
10
|
+
|
11
|
+
The actual usage currently depends on having ffmpeg v3.x installed in the system
|
12
|
+
(ffmpeg v4.x has broken some of this gem's features), see the sample `./Dockerfile` for working containerisation.
|
11
13
|
|
12
14
|
Allows for scripts like
|
13
15
|
```ruby
|
@@ -24,8 +26,28 @@ ffmpeg -y -noautorotate -i flick.mp4 -i track.mp3 -filter_complex "[0:v] fps=fps
|
|
24
26
|
```
|
25
27
|
...that's the idea, but there's much more to it.
|
26
28
|
|
27
|
-
The docs,
|
28
|
-
So you're
|
29
|
+
The docs, more than other parts of this gem, are a work in progress.
|
30
|
+
So, if you're really curious about using `ffmprb`, you have to check the [specs](https://github.com/costa/ffmprb/tree/master/spec) for the actual functionality coverage.
|
31
|
+
A hint on the ideas you might find there: you can use constructs like
|
32
|
+
```
|
33
|
+
Ffmprb::File.temp_fifo('.flv') do |av_pipe|
|
34
|
+
thr = Thread.new do
|
35
|
+
Ffmprb.process(..., av_pipe) do |..., stream_output|
|
36
|
+
output(stream_output) do
|
37
|
+
...
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
begin
|
42
|
+
Ffmprb.process(av_pipe, ...) do |stream_input, ...|
|
43
|
+
...
|
44
|
+
end
|
45
|
+
ensure
|
46
|
+
thr.join
|
47
|
+
end
|
48
|
+
end
|
49
|
+
```
|
50
|
+
in order to implement process pipelines.
|
29
51
|
|
30
52
|
|
31
53
|
## Installation
|
@@ -120,10 +142,12 @@ The `ffmprb` command-line utility expects a script on its standard input:
|
|
120
142
|
```ruby
|
121
143
|
# episode_01.ffmprb
|
122
144
|
|
123
|
-
|
124
|
-
|
145
|
+
output 'episode_01_tease.mpg' do
|
146
|
+
# Play your _episode_ teaser snippet:
|
147
|
+
lay input('episode_01.mov').cut(to: 60), transition: {blend: 3}
|
125
148
|
|
126
149
|
...
|
150
|
+
end
|
127
151
|
```
|
128
152
|
|
129
153
|
$ ffmprb < episode_01.ffmprb
|
@@ -133,20 +157,28 @@ And it can take parameters for the sake of automation convenience:
|
|
133
157
|
|
134
158
|
```ruby
|
135
159
|
# episode_make.ffmprb
|
136
|
-
|episode, logo, intro, badge, title, promo, credits, outro|
|
137
|
-
|
138
|
-
# Play your _episode_ teaser snippet:
|
139
|
-
lay input(episode).cut(to: 60), transition: {blend: 3}
|
160
|
+
|episode, logo, intro, badge, title, promo, credits, outro, final|
|
140
161
|
|
141
|
-
|
162
|
+
output final do
|
163
|
+
# Play your _episode_ teaser snippet:
|
164
|
+
lay input(episode).cut(to: 60), transition: {blend: 1}
|
165
|
+
overlay input(logo).loop.cut(to: 24), after: 3, transition: {blend: 1}
|
166
|
+
lay input(intro).cut(to: 30), transition: {blend: 3}
|
167
|
+
lay input(title), transition: {blend: 1}
|
168
|
+
overlay input(badge), transition: {blend: 1}
|
169
|
+
lay input(episode).cut(from: 60), transition: {blend: 1}
|
170
|
+
lay input(promo).cut(from: 60), transition: {blend: 1}
|
171
|
+
lay input(credits), transition: {blend: 3}
|
172
|
+
lay input(outro), transition: {blend: 3}
|
173
|
+
end
|
142
174
|
```
|
143
175
|
|
144
|
-
$ ffmprb ep01raw.mov logo.png intro.avi new_new.gif ep01tit.mov
|
176
|
+
$ ffmprb ep01raw.mov logo.png intro.avi new_new.gif ep01tit.mov promo.mp4 ep01creds.avi ep01out.mov ep01.mpg < episode_make.ffmprb
|
145
177
|
|
146
178
|
|
147
179
|
### The defaults
|
148
180
|
|
149
|
-
The defaults [defaults](https://github.com/
|
181
|
+
The defaults [defaults](https://github.com/costa/ffmprb/tree/master/lib/defaults.rb) are provided for every possible configuration option (optional options' defaults for the methods below in particular), you're welcome to config anything in your ffmprb scripts.
|
150
182
|
|
151
183
|
|
152
184
|
### Advanced usage
|
@@ -167,7 +199,7 @@ naturally, the latter use the former:
|
|
167
199
|
Ffmprb.process do
|
168
200
|
|
169
201
|
in_main = input(av_input1)
|
170
|
-
output(av_output1, video: {resolution:
|
202
|
+
output(av_output1, video: {resolution: HD_720p, fps: 25}) do
|
171
203
|
lay in_main.crop(0.05), transition: {blend: 1}
|
172
204
|
end
|
173
205
|
|
@@ -192,6 +224,10 @@ end
|
|
192
224
|
|
193
225
|
### Available reel modifier (filter) methods
|
194
226
|
|
227
|
+
`audio`
|
228
|
+
|
229
|
+
`audio` channels just the audio from the reel.
|
230
|
+
|
195
231
|
`crop`({_ratio_ | {[top: _ratio_][, left: _ratio_][, bottom: _ratio_][, right: _ratio_][, width: _ratio_][, height: _ratio_]}})
|
196
232
|
|
197
233
|
`crop` crops the reel frames (e.g. `in1.crop(0.1)` will remove 1/10th of the frame from each side)
|
@@ -206,6 +242,18 @@ end
|
|
206
242
|
|
207
243
|
`mute`
|
208
244
|
|
245
|
+
`pace`(_factor_)
|
246
|
+
|
247
|
+
`pace` changes the reel speed by the given factor
|
248
|
+
|
249
|
+
`pp`
|
250
|
+
|
251
|
+
`pp` activates (some very simple) image postprocessing
|
252
|
+
|
253
|
+
`reverse`
|
254
|
+
|
255
|
+
`reverse` reverses the reel (works efficiently with small fragments only)
|
256
|
+
|
209
257
|
`volume`(_ratio_)
|
210
258
|
|
211
259
|
`volume` changes the volume proportionally to the source. `mute` mutes.
|
@@ -214,10 +262,6 @@ end
|
|
214
262
|
|
215
263
|
`video` channels just the video from the reel.
|
216
264
|
|
217
|
-
`audio`
|
218
|
-
|
219
|
-
`audio` channels just the audio from the reel.
|
220
|
-
|
221
265
|
`copy`(_reel_)
|
222
266
|
|
223
267
|
`copy` copies the reel's modifier chain _onto_ the given reel.
|
@@ -269,7 +313,7 @@ follow these simple principles:
|
|
269
313
|
|
270
314
|
## Contributing
|
271
315
|
|
272
|
-
1. Fork it ( https://github.com/
|
316
|
+
1. Fork it ( https://github.com/costa/ffmprb/fork )
|
273
317
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
274
318
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
275
319
|
4. Push to the branch (`git push origin my-new-feature`)
|
data/TODO.md
ADDED
File without changes
|
data/bin/dev
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
#!/bin/bash -e
|
2
|
+
test "$#" -ne 0 && echo "Unsupported args: $@" >&2 && exit 145
|
3
|
+
cd "$( dirname "${BASH_SOURCE[0]}" )"/..
|
4
|
+
|
5
|
+
export COMPOSE_FILE=spec/docker-compose.yml
|
6
|
+
export COMPOSE_PROJECT_NAME=ffmprb_dev
|
7
|
+
|
8
|
+
docker-compose rm -svf
|
9
|
+
|
10
|
+
docker-compose build --force-rm
|
11
|
+
|
12
|
+
DEBUG=y docker-compose run --entrypoint bundle tester exec guard -p -y 3 -l 3 && docker-compose rm -svf || ( docker-compose logs && exit 1 )
|
data/bin/test
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
#!/bin/bash -e
|
2
|
+
cd "$( dirname "${BASH_SOURCE[0]}" )"/..
|
3
|
+
|
4
|
+
test_to_run="$*"
|
5
|
+
|
6
|
+
export COMPOSE_FILE=spec/docker-compose.yml
|
7
|
+
export COMPOSE_PROJECT_NAME=ffmprb_dev
|
8
|
+
|
9
|
+
docker-compose rm -svf
|
10
|
+
|
11
|
+
docker-compose build --force-rm
|
12
|
+
|
13
|
+
docker-compose run tester $test_to_run && docker-compose rm -svf || ( docker-compose logs && exit 1 )
|