-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
327 lines (215 loc) · 11.1 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
== 6.1.2 2024-11-07
Fixes:
* Calculate rotation correctly for media files with multiple side data elements
== 6.1.1 2024-11-04
Fixes:
* MOV files processed in iMovie should not be marked as audio with attached picture
== 6.1.0 2024-10-24
* Added new `default?` and `attached_pic?` helper methods to FFMPEG::Stream objects
* Added new `audio_with_attached_pic?` helper method to FFMPEG::Media objects
== 6.0.3 2024-06-19
Fixes:
* Fixed a possible race condition that would cause the transcoder to time out even if the transcoder was still running
== 6.0.2 2024-06-18
Fixes:
* Fixed a crash where extremely long media files would cause the transcoder to fail with SystemStackError: stack level too deep
== 6.0.1 2024-06-05
Fixes:
* Fixed crashes when using FFMPEG::IO with non-UTF-8 encoding (e.g.: when ffprobe or ffmpeg output contains non-UTF-8 byte sequences)
== 6.0.0 2024-06-05
Breaking Changes:
* Changed FFMPEG::IO to use UTF-8 encoding instead of ISO-8859-1 by default
* Changed FFMPEG::Transcoder#run to raise FFMPEG::Error if FFMPEG exits with non-zero exit code even if validate was set to false on the transcoder
* Removed the errors attribute of FFMPEG::Transcoder
Improvements:
* Changed FFMPEG::IO to handle carriage returns by FFMPEG – progress reports will be more frequent and more reliable
* Changed FFMPEG::Transcoder to report progress only on whole percentages by default (e.g.: 0.01, 0.2 etc.)
* Added new progress_digits kwarg to FFMPEG::Transcoder to allow more frequent progress updates
== 5.0.0 2024-05-02
Breaking Changes:
* Dropped support for Ruby 2.x
== 4.2.0 2024-05-02
Improvements:
* Added new methods to cut `FFMPEG::Media#cut` and concat `FFMPEG::Media.concat` media
* Added new API to deal with filters
* Added `FFMPEG::Filters::SilenceDetect` to detect silence in audio streams
* Added `FFMPEG::Filters::Grayscale` as a sample filter
== 4.1.0 2024-04-29
Improvements:
* Added new `(ffmpeg|ffprobe)_(capture3|popen3)` methods to the `FFMPEG` module to allow custom calls to the ffmpeg and ffprobe binaries
== 4.0.0 2024-04-27
Breaking Changes:
* FFMPEG::Movie was renamed to FFMPEG::Media to better reflect the fact that it can handle both audio and video files
* FFMPEG::Stream was introduced to handle the streams within a media file
* Some FFMPEG::Media methods were renamed or removed to better reflect the new structure
* FFMPEG::Transcoder now requires encoding options to be passed
* FFMPEG::Transcoder now expects the formerly called transcoder_options to be passed as keyword arguments
== 3.0.2 2016-11-18
Improvements:
* Issue #153 Adds support for multiple audio streams
* Issue #150 Does not trust reported SAR/DAR as these may not be defined per https://trac.ffmpeg.org/ticket/3798
== 3.0.1 2016-11-10
Improvements:
* Issue #144 is fixed. Of a nil movie is presented to transcode, the progress block does not fail
* Issue #145 Adds ability to follow URLs when presented as Movie inputs
== 3.0.0 2016-09-07
Breaking Changes:
* Changes: custom parameters now specified using an array syntax
Improvements:
* Issue # 128, #137 are fixed (custom parameters passed as strings) which was caused
by 2.1.0 in attempting to avoid the use of shell and filename escaping issues
on various platforms.
== 2.1.0 2016-08-08
New:
* Issue #135, Support creating slideshows from stills
* Issue #130, Adds support for a URL as an input
* Support for specifying options to apply to the input file
* Improved support for calling FFMpeg with popen3, improving compatibility with various platforms, including windows
* Issue #111. uses attr_accessor for the timeout attribute
* Exposes the movie's entire meta data and format tags as movie attributes
* Issue #122, adds encoding fix to stderr
* All specs pass and brought current with Rspec V3
* Issue #123, #131 improved stream validation, ignoring additional invalid streams if a valid stream is recognized
* Issue #124, improved parsing for moving creation_time
* SAR and DAR now adapt after rotation, DAR is ignored when calculating dimensions
Improvements:
* Allow parenthesis in colorspace (thanks walterdavis for initial code and rociiu for finding a bug with it)
* Width and height now switched if video is filmed in portrait mode. ffmpeg 2.7 or later now automatically rotates output
* Movie metadata now provided with ffprobe (#114). Thanks to Ryan Lovelett for the contributions!
* Ability to create multiple screenshots at consistent intervals in one pass (#113)
== 2.0.0 2016-01-14
New:
* Support watermarking (thanks smoothdvd)
* Bumped target ffmpeg version to 2.8
Improvements:
* Allow parenthesis in colorspace (thanks walterdavis for initial code and rociiu for finding a bug with it)
* Width and height now switched if video is filmed in portrait mode. ffmpeg 2.7 or later now automatically rotates output
* Movie metadata now provided with ffprobe (#114). Thanks to Ryan Lovelett for the contributions!
* Ability to create multiple screenshots at consistent intervals in one pass (#113)
== 1.0.0 2013-07-08
New:
* Bumped target ffmpeg version to 1.2.1
Improvements:
* Simpler implementation for timeouts.
Should be far less cpu and memory dependent (don't spawn a thread for every line of output)
Timeout spec now passes in Rubinius (using 1.9 mode)
* Give helpful error message for windows users lacking the win32-process gem (thanks casoetan)
* Add Movie#container (thanks vitalis)
* Support vprofile and preset encoding options (thanks vitalis)
Changes:
* Default timeout lowered to 30 seconds
Bugs:
* Avoid crash if asking for frame_rate of a video without video stream (thanks squidarth)
* Fix crash when doing audio transcoding on ffmpeg >= 1.0.1 (thanks vitalis)
Deprecations:
* Removed support for Ruby 1.8
* Removed support for ffmpeg 0.7
Refactorings:
* Quite a few, see commit history for details.
== 0.9.0 2012-07-24
New:
* Bumped target ffmpeg version to 0.11.1
* Add hung process detection with configurable timeout (thanks stakach)
* Raise FFMPEG::Error instead of generic RuntimeError on failed transcodings
* Movie#screenshot for more intuitive screenshotting (README has details)
* Movie#creation_time and Movie#rotation attributes when metadata is available (thanks Innonate)
Bugs:
* Fixed too many open files bug (thanks to akicho8)
* Fixed missing path escaping (thanks to mikesager)
* Fixed README typo (thanks to Linutux)
* Files outputing "could not find codec parameters" are now recognized as invalid
Deprecations:
* Removed Movie#uncertain_duration?
* Removed all the deprecated crop options (use :custom => '-vf crop=x:x:x:x' if you need it)
Refactorings:
* Removed the deprecated duration validation code
* Polish on the transcoder class
* Polish on the spec suite
== 0.8.5 2011-03-05
* If a clip has a DAR that doesn't make sense fall back to calculating aspect ratio from dimensions
* Allow filenames with single quote characters (thanks to youpy)
== 0.8.4 2011-11-30
* Duration now one decimal more accurate (thanks to Russel Brooks)
* Added encoding option seek_time (thanks to Misty De Meo)
== 0.8.3 2011-09-01
* Parameters now come in the order of codecs, presets, others so that we can override the presets
* Added encoding option keyframe_interval to set number of frames between i-frames (aka GOP size)
* Streamio (sponsor of this project) have launched new awesome pricing @ http://streamio.com
== 0.8.2 2011-08-19
* Path to ffmpeg binary can now be specified (thanks jonathandean)
* If ffmpeg output contains "is not supported" the Movie will be considered invalid
== 0.8.1 2011-07-28
* Fix progress yielding with ffmpeg 0.8
* Updated specs to pass with ffmpeg 0.8
== 0.8.0 2011-05-26
* Duration is now ALWAYS considered uncertain (we've noticed that ffmpeg is not always correct)
* This means that the duration check will normally never run (unless you manually hack @uncertain_duration to false)
* Movie#audio_channels now returns nil if there is no audio stream (instead of crashing)
* Development: Use Bundler
* Development: Update RSpec to 2.6
== 0.7.8 2011-04-04
* Fixed number of audio channels on files with 5.1 audio
== 0.7.7 2011-02-01
* Movies with starttime are now considered as having uncertain duration as its behavior is not consistent across formats
* Upgrade development environment to RSpec 2.4
== 0.7.6 2011-01-14
* Another ruby 1.9 encoding fix
== 0.7.5 2011-01-14
* Fixed some ruby 1.9 issues
* Added Movie#video_bitrate and Movie#audio_bitrate (thanks to mbj)
== 0.7.4 2010-12-07
* Fixed broken duration on movies with start times over 0 by reducing duration with start-time
== 0.7.3 2010-08-26
* Replaced Jewler with simple dynamic gemspec file
* Spec files now not in published gem to make it a lot smaller in size
* Full output from ffmpeg command in error raised during transcoding
== 0.7.2 2010-08-11
* Added encoding option duration
* Avoid crashing when ffmpeg can't find resolution of a movie
== 0.7.1 2010-07-08
* Make sure preset parameters are always put last to avoid them ending up before any codec assignments
* Testing against a fresh ffmpeg build (r24069)
== 0.7.0 2010-07-07
* Support for ffpresets through video_preset, audio_preset and file_preset encoding options
* Added encoding option video_bitrate_tolerance
== 0.6.8.1 2010-07-06
* Bugfix - aspect ratio was not calculated properly on movies with no DAR
== 0.6.8 2010-07-06
* Don't use encoding options with nil values
* Added encoding options video_max_bitrate, video_min_bitrate and buffer_size for constant bitrate encoding
== 0.6.7 2010-06-10
* Bugfix - aspect ratio preserver could suggest non even resolutions in certain circumstances
== 0.6.6 2010-06-10
* Transcodings to .jpg and .png will now work as they will skip duration validation
== 0.6.5 2010-05-19
* Movie#size method to get file size.
== 0.6.4 2010-05-12
* Ruby 1.9 compatibility fix for EncodingOptions (thanks michalf!)
== 0.6.3 2010-05-05
* Use DAR to calculate aspect ratio if available
== 0.6.2 2010-05-05
* Added Movie#uncertain_duration? which is true if ffmpeg is guessing duration from bitrate
* Skipping the transcoders duration validation if original file has uncertain duration
* Made sure aspect ratio preservation always rounds new size to an even number to avoid "not divisible by 2" errors
* Changed Movie#valid? logic to accept any movie with either a readable audio or video stream
== 0.6.0 2010-05-04
* Cropping options now handled by EncodingOptions (croptop, cropbottom, cropleft and cropright)
* Aspect ratio parameter calculated and added by default
* Added transcoder options to preserve original aspect ratio on width or height
== 0.5.0 2010-04-28
* Added logging capabilities
== 0.4.3 2010-04-06
* Correctly identify invalid movies on latest ffmpeg build (r22811)
== 0.4.2 2010-04-06
* Escape the path to handle spaces in filenames and avoid CLI injection attacks (thanks J. Weir!)
== 0.4.1 2010-02-10
* Forgot to change the transcoding shortcut from Movie
== 0.4.0 2010-02-10
* Transcoding API changed to make use of more humanly readable options (see README for examples)
* Fixed frame rate parsing for integer frame rates
== 0.3.0 2010-02-07
* Simple transcoding
== 0.2.0 2010-02-06
* Some more metadata parsing
== 0.1.0 2010-02-05
* Some basic parsing of metadata added