ffmprb 0.11.3 → 0.12.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (184) hide show
  1. checksums.yaml +5 -5
  2. data/Dockerfile +18 -0
  3. data/Gemfile +8 -1
  4. data/Gemfile.lock +121 -0
  5. data/README.md +65 -21
  6. data/TODO.md +0 -0
  7. data/bin/dev +12 -0
  8. data/bin/test +13 -0
  9. data/coverage/assets/0.10.0/application.css +799 -0
  10. data/coverage/assets/0.10.0/application.js +1707 -0
  11. data/coverage/assets/0.10.0/colorbox/border.png +0 -0
  12. data/coverage/assets/0.10.0/colorbox/controls.png +0 -0
  13. data/coverage/assets/0.10.0/colorbox/loading.gif +0 -0
  14. data/coverage/assets/0.10.0/colorbox/loading_background.png +0 -0
  15. data/coverage/assets/0.10.0/favicon_green.png +0 -0
  16. data/coverage/assets/0.10.0/favicon_red.png +0 -0
  17. data/coverage/assets/0.10.0/favicon_yellow.png +0 -0
  18. data/coverage/assets/0.10.0/loading.gif +0 -0
  19. data/coverage/assets/0.10.0/magnify.png +0 -0
  20. data/coverage/assets/0.10.0/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  21. data/coverage/assets/0.10.0/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  22. data/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  23. data/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  24. data/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  25. data/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  26. data/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  27. data/coverage/assets/0.10.0/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  28. data/coverage/assets/0.10.0/smoothness/images/ui-icons_222222_256x240.png +0 -0
  29. data/coverage/assets/0.10.0/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  30. data/coverage/assets/0.10.0/smoothness/images/ui-icons_454545_256x240.png +0 -0
  31. data/coverage/assets/0.10.0/smoothness/images/ui-icons_888888_256x240.png +0 -0
  32. data/coverage/assets/0.10.0/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  33. data/coverage/assets/0.10.2/application.css +799 -0
  34. data/coverage/assets/0.10.2/application.js +1707 -0
  35. data/coverage/assets/0.10.2/colorbox/border.png +0 -0
  36. data/coverage/assets/0.10.2/colorbox/controls.png +0 -0
  37. data/coverage/assets/0.10.2/colorbox/loading.gif +0 -0
  38. data/coverage/assets/0.10.2/colorbox/loading_background.png +0 -0
  39. data/coverage/assets/0.10.2/favicon_green.png +0 -0
  40. data/coverage/assets/0.10.2/favicon_red.png +0 -0
  41. data/coverage/assets/0.10.2/favicon_yellow.png +0 -0
  42. data/coverage/assets/0.10.2/loading.gif +0 -0
  43. data/coverage/assets/0.10.2/magnify.png +0 -0
  44. data/coverage/assets/0.10.2/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  45. data/coverage/assets/0.10.2/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  46. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  47. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  48. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  49. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  50. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  51. data/coverage/assets/0.10.2/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  52. data/coverage/assets/0.10.2/smoothness/images/ui-icons_222222_256x240.png +0 -0
  53. data/coverage/assets/0.10.2/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  54. data/coverage/assets/0.10.2/smoothness/images/ui-icons_454545_256x240.png +0 -0
  55. data/coverage/assets/0.10.2/smoothness/images/ui-icons_888888_256x240.png +0 -0
  56. data/coverage/assets/0.10.2/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  57. data/coverage/assets/0.12.2/DataTables-1.10.20/images/sort_asc.png +0 -0
  58. data/coverage/assets/0.12.2/DataTables-1.10.20/images/sort_asc_disabled.png +0 -0
  59. data/coverage/assets/0.12.2/DataTables-1.10.20/images/sort_both.png +0 -0
  60. data/coverage/assets/0.12.2/DataTables-1.10.20/images/sort_desc.png +0 -0
  61. data/coverage/assets/0.12.2/DataTables-1.10.20/images/sort_desc_disabled.png +0 -0
  62. data/coverage/assets/0.12.2/application.css +1 -0
  63. data/coverage/assets/0.12.2/application.js +7 -0
  64. data/coverage/assets/0.12.2/colorbox/border.png +0 -0
  65. data/coverage/assets/0.12.2/colorbox/controls.png +0 -0
  66. data/coverage/assets/0.12.2/colorbox/loading.gif +0 -0
  67. data/coverage/assets/0.12.2/colorbox/loading_background.png +0 -0
  68. data/coverage/assets/0.12.2/favicon_green.png +0 -0
  69. data/coverage/assets/0.12.2/favicon_red.png +0 -0
  70. data/coverage/assets/0.12.2/favicon_yellow.png +0 -0
  71. data/coverage/assets/0.12.2/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  72. data/coverage/assets/0.12.2/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  73. data/coverage/assets/0.12.2/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  74. data/coverage/assets/0.12.2/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  75. data/coverage/assets/0.12.2/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  76. data/coverage/assets/0.12.2/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  77. data/coverage/assets/0.12.2/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  78. data/coverage/assets/0.12.2/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  79. data/coverage/assets/0.12.2/images/ui-icons_222222_256x240.png +0 -0
  80. data/coverage/assets/0.12.2/images/ui-icons_2e83ff_256x240.png +0 -0
  81. data/coverage/assets/0.12.2/images/ui-icons_454545_256x240.png +0 -0
  82. data/coverage/assets/0.12.2/images/ui-icons_888888_256x240.png +0 -0
  83. data/coverage/assets/0.12.2/images/ui-icons_cd0a0a_256x240.png +0 -0
  84. data/coverage/assets/0.12.2/loading.gif +0 -0
  85. data/coverage/assets/0.12.2/magnify.png +0 -0
  86. data/coverage/assets/0.12.3/DataTables-1.10.20/images/sort_asc.png +0 -0
  87. data/coverage/assets/0.12.3/DataTables-1.10.20/images/sort_asc_disabled.png +0 -0
  88. data/coverage/assets/0.12.3/DataTables-1.10.20/images/sort_both.png +0 -0
  89. data/coverage/assets/0.12.3/DataTables-1.10.20/images/sort_desc.png +0 -0
  90. data/coverage/assets/0.12.3/DataTables-1.10.20/images/sort_desc_disabled.png +0 -0
  91. data/coverage/assets/0.12.3/application.css +1 -0
  92. data/coverage/assets/0.12.3/application.js +7 -0
  93. data/coverage/assets/0.12.3/colorbox/border.png +0 -0
  94. data/coverage/assets/0.12.3/colorbox/controls.png +0 -0
  95. data/coverage/assets/0.12.3/colorbox/loading.gif +0 -0
  96. data/coverage/assets/0.12.3/colorbox/loading_background.png +0 -0
  97. data/coverage/assets/0.12.3/favicon_green.png +0 -0
  98. data/coverage/assets/0.12.3/favicon_red.png +0 -0
  99. data/coverage/assets/0.12.3/favicon_yellow.png +0 -0
  100. data/coverage/assets/0.12.3/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  101. data/coverage/assets/0.12.3/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  102. data/coverage/assets/0.12.3/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  103. data/coverage/assets/0.12.3/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  104. data/coverage/assets/0.12.3/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  105. data/coverage/assets/0.12.3/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  106. data/coverage/assets/0.12.3/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  107. data/coverage/assets/0.12.3/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  108. data/coverage/assets/0.12.3/images/ui-icons_222222_256x240.png +0 -0
  109. data/coverage/assets/0.12.3/images/ui-icons_2e83ff_256x240.png +0 -0
  110. data/coverage/assets/0.12.3/images/ui-icons_454545_256x240.png +0 -0
  111. data/coverage/assets/0.12.3/images/ui-icons_888888_256x240.png +0 -0
  112. data/coverage/assets/0.12.3/images/ui-icons_cd0a0a_256x240.png +0 -0
  113. data/coverage/assets/0.12.3/loading.gif +0 -0
  114. data/coverage/assets/0.12.3/magnify.png +0 -0
  115. data/coverage/index.html +47324 -0
  116. data/exp/EXP +7 -0
  117. data/exp/av-cut-mp4you60.ffmprb +10 -0
  118. data/exp/docker-compose.yml +9 -0
  119. data/exp/gop-cut-cat-you60 +141 -0
  120. data/exp/present/Dockerfile +13 -0
  121. data/exp/present/Gemfile +3 -0
  122. data/exp/present/Gemfile.lock +22 -0
  123. data/exp/present/bin/up-deps +8 -0
  124. data/exp/present/docker-compose.yml +21 -0
  125. data/exp/present/exp/present +10 -0
  126. data/exp/present/exp/present.rb +37 -0
  127. data/exp/run +9 -0
  128. data/exp/stitch2.ffmprb +5 -0
  129. data/exp/unzip-mp4you60 +58 -0
  130. data/exp/youtubby/Dockerfile +13 -0
  131. data/exp/youtubby/Gemfile +7 -0
  132. data/exp/youtubby/Gemfile.lock +73 -0
  133. data/exp/youtubby/README.md +21 -0
  134. data/exp/youtubby/bin/up-deps +8 -0
  135. data/exp/youtubby/docker-compose.yml +20 -0
  136. data/exp/youtubby/exp/gop-raw-cut-you-HD60 +13 -0
  137. data/exp/youtubby/exp/gop-raw-cut-you-HD60.rb +230 -0
  138. data/exp/youtubby/exp/media-upload +13 -0
  139. data/exp/youtubby/exp/tmp/CURRENT +2 -0
  140. data/exp/youtubby/google_youtube.rb +39 -0
  141. data/exp/youtubby/old-ul.py +181 -0
  142. data/exp/youtubby/old-ul.rb +87 -0
  143. data/exp/youtubby/py-Dockerfile +11 -0
  144. data/exp/youtubby/py-docker-compose.yml +13 -0
  145. data/exp/youtubby/requirements.txt +19 -0
  146. data/exp/youtubby/upload.rb +38 -0
  147. data/exp/zip-cut-mp4you60 +42 -0
  148. data/exp/zip2mp4k60 +27 -0
  149. data/ffmprb.gemspec +34 -14
  150. data/lib/defaults.rb +6 -6
  151. data/lib/ffmprb/execution.rb +1 -1
  152. data/lib/ffmprb/file/sample.rb +2 -2
  153. data/lib/ffmprb/file/threaded_buffered.rb +4 -4
  154. data/lib/ffmprb/file.rb +20 -20
  155. data/lib/ffmprb/filter.rb +100 -61
  156. data/lib/ffmprb/find_silence.rb +5 -2
  157. data/lib/ffmprb/process/input/chain_base.rb +6 -4
  158. data/lib/ffmprb/process/input/channeled.rb +1 -1
  159. data/lib/ffmprb/process/input/cropped.rb +4 -1
  160. data/lib/ffmprb/process/input/cut.rb +2 -2
  161. data/lib/ffmprb/process/input/looping.rb +11 -16
  162. data/lib/ffmprb/process/input/loud.rb +1 -1
  163. data/lib/ffmprb/process/input/paced.rb +35 -0
  164. data/lib/ffmprb/process/input/postprocessed.rb +29 -0
  165. data/lib/ffmprb/process/input/reversed.rb +29 -0
  166. data/lib/ffmprb/process/input.rb +7 -3
  167. data/lib/ffmprb/process/output.rb +45 -29
  168. data/lib/ffmprb/process.rb +8 -9
  169. data/lib/ffmprb/util/proc_vis.rb +5 -4
  170. data/lib/ffmprb/util/thread.rb +13 -11
  171. data/lib/ffmprb/util/threaded_io_buffer.rb +25 -22
  172. data/lib/ffmprb/util.rb +38 -13
  173. data/lib/ffmprb/version.rb +2 -2
  174. data/lib/ffmprb.rb +8 -5
  175. data/tmp/exp/docker-compose.yml +9 -0
  176. data/tmp/exp/src/SAM_3132.MP4 +0 -0
  177. data/tmp/ffmprb-0.11.4.gem +0 -0
  178. data/tmp/output.rb +383 -0
  179. metadata +159 -139
  180. data/.gitignore +0 -10
  181. data/.rspec +0 -4
  182. data/.ruby-version +0 -1
  183. data/.travis.yml +0 -3
  184. data/circle.yml +0 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: c1011479d8fbce69f1f6db17284beb628e4763e8
4
- data.tar.gz: 2792b5f95252bb47b19da1754fb5a24ad5ae5593
2
+ SHA256:
3
+ metadata.gz: 9dfd9dfa0902b6fa0f7e18655e385c11f968dfc73c51bc86a0828befffcdd039
4
+ data.tar.gz: 5c4721cbc6003848150dd8600939bf973dbd165b23177faeb38f1e7ed6444425
5
5
  SHA512:
6
- metadata.gz: 71d990e9da83fabb642394b4bec672869acdd77fcf8be4dfb9453bfa84e0b9f053bac9f1b90178929416f124fcb184f7e3ecf2c561977585c8688d63f1f946ab
7
- data.tar.gz: 49ba4dd23a6cd8e98484599414967e5a428e983bcbd5169fde989691507cc91cfea5bead3579f0c1e73affdac2c50707f230052552211791271385a0123f2b69
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 'rspec_junit_formatter' # for circleCI https://circleci.com/docs/test-metadata#automatic-test-metadata-collection
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
- [![Circle CI](https://circleci.com/gh/showbox-oss/ffmprb.svg?style=svg)](https://circleci.com/gh/showbox-oss/ffmprb)
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
- If you're neither a video technologist, nor a video artist, you neither need cumbersome low level tools (like ffmpeg), nor heavy and costly high level tools (like Premiere).
7
+ Any script-able person can manipulate video/audio media -- or automate such processing -- with ffmprb.
9
8
 
10
- Any script-able person can manipulate video/audio media -- or automate processing thereof -- with ffmprb.
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, as well as any other part of this gem, are a work in progress.
28
- So you're very welcome to look around the [specs](https://github.com/showbox-oss/ffmprb/tree/master/spec) for the actual functionality coverage.
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
- # Play your _episode_ teaser snippet:
124
- lay input('episode_01.mov').cut(to: 60), transition: {blend: 3}
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 showbox_promo.mp4 ep01creds.avi ep01out.mov < episode_make.ffmprb
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/showbox-oss/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.
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: Ffmprb::HD_720p, fps: 25}) do
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/showbox-oss/ffmprb/fork )
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 )