aboutsummaryrefslogtreecommitdiff
path: root/libraries/phpvideotoolkit/CHANGELOG
blob: 8c28bd4f3ae0c52962ed6ddabe5b21e5a24ef429 (plain)
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
[0.1.9] [06.11.2008] 
	- ADDED a check in getFFmpegInfo to determine if ffmpeg is actually found/installed.
	  The value is accessible through PHPVideoToolkit::$ffmpeg_found;
	- ADDED example15.php that shows usage of PHPVideoToolkit::$ffmpeg_found

[0.1.8] [06.10.2008] 
	- FIXED php4 class parse errors and index examples.
	- SEPARATED out php4 and php5 examples and rejigged the examples directory structure.
	- ADDED DIRECTORY_SEPARATOR shortcut DS.
	- CHANGED compiler in the getFFmpegInfo() data array to binary and moved gcc, build_date
	  and build_date_timestamp to compiler.
	- ADDED raw info to the data returned by getFFmpegInfo().
	- ADDED strict version checking and alerts in examples.
	- ADDED canCodecBeEncoded(), canCodecBeDecoded(), and validateCodec() that aid in 
	  determining how the ffmpeg binary can interact with certain codecs.
	- ADDED example 14 to give an encode/decode lookup table.
	- FIXED example-configuration vhook definition bug. Thanks pwnedd.
	- ADDED $watermark_options to addWatermark(). Thanks pwnedd.
	- FIXED gif export that resulted in a failure. Thanks pwnedd.
	- FIXED path in FFmpeg-PHP adapter unit tests.
	- ADDED extra argument $use_smart_values to formatSeconds() and formatTimecode() to allow
	  the disabling of smart values, ie mins, secs and millisecs, by default it is true.
	- CHANGED example 12. Added a form to allow custom timecode changes. Added timecode docs.
	- FIXED bug with formatSeconds() that incorrectly interpreted hours if the number of
	  hours was greater than 24.
	- FIXED bug where vhook support wasn't correctly detecting if they were enabled or not.
	  Thanks pwnedd.
	- FIXED incorrect documentation in example 13.
	- FIXED use of static class detection in php5 class.
	- UPDATED aspect ratio usage so if you use an aspect ratio the width and heights are set
	  to what they should be using the aspect ratio.
	- UPDATED addWatermark() to allow different watermark vhooks to be used, mainly 
	  watermark.so and imlib2.so. http://ffmpeg.mplayerhq.hu/hooks.html#SEC4
	  Thanks pwnedd.
	- FIXED an error in getFileInfo() that threw a php notice and resulted in incorrect
	  data when analyzing images.
	- ADDED setAudioChannels(), PHPVideoToolkit::AUDIO_MONO and PHPVideoToolkit::AUDIO_STEREO
	  to set the number of channels in the output media.
	- ADDED fileHasVideo(), and fileHasAudio()
	- ADDED frames to audio info, (this assumes ffmpeg uses 1 millisec = 1 audio frame, if not
	  let me know)
	- ADDED extractSegment() to extract portions of video and audio.
	- FIXED durations.seconds info that incorrectly rounded the number of seconds the media
	  is instead of accurate reporting.
	- ADDED example15.php to show you how to extra a portion of media and then optionally
	  speed it up or slow it down.
	- ADDED new INSTALL directions pointing to ffmpeginstall the automatic command line
	  ffmpeg et-all installer.
	- CHANGED private vars and functions to protected for feature request of beiercai.
	- ADDED disableVideo()

[0.1.7] [19.06.2008] 
	- FIXED error where an empty arguments param will get escaped and lead to an error
	  Thanks mighty.

[0.1.6] [06.06.2008] 
	- ADDED check and error message to see if the temp directory supplied is writable. 
	- FIXED Syntax error in PHP 4 version of the class.

[0.1.5] [06.06.2008] 
	- REMOVED dependancy on buffering the exec calls to a file, parsing the file and
	  then unlinking the file. Cuts down considerably of the impact of the class on
	  the server. Thanks Varon. http://www.buggedcom.co.uk/discuss/viewtopic.php?id=10
	- FIXED check for liblamemp3 audio format problem.
	- UPDATED example/index.php to correctly get the current release version, and
	  remove the php notices.
	- UPDATED PHPVideoToolkit::getFileInfo() and PHPVideoToolkit::getFFmpegInfo() so
	  they can now be called statically.
	- UPDATED example06.php to have the media embedded in the example.
	- BUNDLED the Javascript PluginObject package with PHPVideoToolkit. It is an 
	  end-all solution to embedding browser based plugins via javascript. It is 
	  distributed under a BSD License. The full package can be downloaded from:
	  http://sourceforge.net/project/showfiles.php?group_id=223120

[0.1.4] [10.04.2008] 
	- ADDED phpvideotoolkit.php4.php and renamed the php5 class 
	  phpvideotoolkit.php5.php, however the adapter classes will remain php5 only
	  for the time being. Allow the adapters are php5 it would be very simple for
	  someone to convert them to php4. IF you do let me know and i'll include them
	  in the distribution.
	- FIXED PHP Notice errors, googlecode issue #1, Thanks Rob Coenen.
	- DEPRECIATED setVideoOutputDimensions for setVideoDimensions
	- ADDED PHPVideoToolkit::flvStreamSeek() which acts as a php stream proxy for
	  flash flv files, can also limit bandwidth speed. See example13.php for more info.
	- ADDED example13.php to demo how to use the new flv seeking function flvStreamSeek()
	- DEPRECIATED setAudioFormat for setAudioCodec. setAudioFormat will be removed in 
	  version 0.2.0
	- DEPRECIATED setVideoFormat for setVideoCodec. setVideoFormat will be removed in 
	  version 0.2.0
	- REMOVED dependancy of the ffmpeg-PHP adapter on the getID3 library as is 
	  incompatible with the BSD license. Now integrated with php-reader 
	  http://code.google.com/p/php-reader/ which is licensed under a New BSD license.

[0.1.3] [04.04.2008] 
	- RENAMED primary class to PHPVideoToolkit to avoid any confusion with 
	  ffmpeg-php
	- THANKS to Istvan Szakacs, and Rob Coenen for providing some valuable feedback, 
	  bug fixes and code contributions.
	- ADDED note to example11.php to warn windows users about getID3's
	  helper files.
	- ADDED example12.php which shows how to manipulate timecodes.
	- CHANGED the behaviour of extractFrames and extractFrame to allow you
	  to specify specific frames and enter different types of timecodes as
	  params using the new $timecode_format argument.
	- ADDED value PHPVideoToolkit::getFFmpegInfo()['ffmpeg-php-support']; Values are
		- 'module' = ffmpeg-php is installed as a php module
		- 'emulated' = ffmpeg-php is supported through the VideoToolkit adapter
		  classes (supplied with this package)
		- false = ffmpeg-php is not supported in any way.
	- ADDED PHPVideoToolkit::hasFFmpegPHPSupport() returns one of the values above,
	  dictating if ffmpeg-php is supported.
	- ADDED PHPVideoToolkit::getFFmpegInfo()['compiler']['vhook-support'] that determines
	  if vhook support has been compiled into the ffmpeg binary.
	- ADDED PHPVideoToolkit::hasVHookSupport() returns a boolean value to determine
	  if vhook support is enabled in the ffmpeg binary.
	- FIXED path include bug in example08.php
	- ADDED frame existence check to extractFrame and extractFrames, thanks to
	  Istvan Szakacs for suggesting the idea.
	- ADDED an extra param to PHPVideoToolkit::setInputFile() and 
	  PHPVideoToolkit::prepareImagesForConversion(), $input_frame_rate. by default it is
	  0 which means no input frame rate is set, if you set it to false for 
	  setInputFile then the frame rate will retrieved, otherwise the input
	  frame rate will be set to whatever integer is set.
	- ADDED frame_count to the duration field of the getFileInfo array. 
	- ADDED check for --enable-liblamemp3 which requires a different codec for
	  setting the audio format as mp3.
	- ADDED width and height check in setVideoOutputDimensions, as apparently
	  the output dimensions have to be even numbers.
	- REMOVED call-by-pass-time-reference dependance from _postProcess()
	- ADDED vhook check to PHPVideoToolkit::addWatermark(), returns false if vhook is not
	  enabled.
	- ADDED PHPVideoToolkit::addGDWatermark() to allow GD watermarking of outputted images.
	- CHANGED the functionality of example04.php to show usage of addGDWatermark
	  if vhooking is not enabled.
	
[0.1.2] [03.04.2008] 
	- FIXED bug in PHPVideoToolkit::getFileInfo() that in some instances didn't return 
	  the correct information, such as dimensions and frame rate. Thanks to
	  Istvan Szakacs for pointing out the error.
	- CHANGED the way an image sequence is outputted. %d within the naming
	  of the output files is now for internal use only.
	  	%index 		- is the old %d and it also accepts numerical padding.
	  	%timecode 	- is the pattern for hh-mm-ss-fn, where fn is the frame 
					  number.
	- UPDATED example02.php to reflect the changes above.
	- ADDED ffmpeg-php adapters to provide a pure PHP implementation of the
	  ffmpeg-php module.
	- ADDED getID3 to the distribution.
	 	- @link http://getid3.sourceforge.net/
		- @author James Heinrich <info-at-getid3-dot-org>  (et al)
	  	- @license GPL and gCL (getID3 Commerical License).
	- ADDED GifEncoder to the distribution.
	 	@link http://www.phpclasses.org/browse/package/3163.html
	 	@link http://phpclasses.gifs.hu/show.php?src=GIFEncoder.class.php
	  	@author László Zsidi
	  	@license Freeware.
	- ADDED example11.php, example12.php to demonstrate the ffmpeg-php
	  adapters.
	- CHANGED PHPVideoToolkit::getFileInfo()['audio']['frequency'] to
      	PHPVideoToolkit::getFileInfo()['audio']['sample_rate']
	- CHANGED PHPVideoToolkit::getFileInfo()['audio']['format'] to 
	  	PHPVideoToolkit::getFileInfo()['audio']['codec']
	- CHANGED PHPVideoToolkit::getFileInfo()['video']['format'] to 
	  	PHPVideoToolkit::getFileInfo()['video']['codec']
	- ADDED PHPVideoToolkit::getFileInfo()['video']['pixel_format']
	- ADDED PHPVideoToolkit::getFileInfo()['_raw_info'] which is the raw buffer output
	- ADDED PHPVideoToolkit::getFileInfo()['duration']['start'] (re-added)
	- UPDATED PHPVideoToolkit::extractFrame so in some instances it will be less cpu
	  intensive.
	- UPDATED PHPVideoToolkit::_combineCommands so commands can be ordered in the exec
	  string.

[0.1.1] [29.03.2008] 
	- FIXED bug in the post processing of exporting a series of image frames.
	  With thanks to Rob Coenen.
	- FIXED bug in PHPVideoToolkit::getFileInfo() that returned the incorrect frame
	  rate of videos.
	- CHANGED functionality of PHPVideoToolkit::extractFrame(), to export a specific
	  frame based on the frame number, not just the hours, mins, secs timecode
	- FIXED bug in ffmpeg.example9.php where the gif was incorrectly named.
	- CHANGED functionality of PHPVideoToolkit::getFileInfo(), reorganised the way the 
	  duration data is returned.
	- CHANGED functionality of PHPVideoToolkit::getFileInfo(), so the timecode with
	  frame numbers instead of milliseconds is also returned in the value 
	  duration.timecode.frames.exact, however this value is only available to 
	  video files.
	- REMOVED duration.start from the information returned by 
	  PHPVideoToolkit::getFileInfo()
	- CHANGED PHPVideoToolkit::$image_output_timecode's default value to true/
	- ADDED PHPVideoToolkit::registerPostProcess() to provide a way to automate 
	  callbacks docs so you can hook into post processing of the ffmpeg 
	  output. See function for more info.
	- CHANGED the way PHPVideoToolkit::setFormatToFLV() adds the meta data to the flv.
	  It now uses PHPVideoToolkit::registerPostProcess() to create a callback.
	- FIXED average time mistakes in examples.
	- FIXED overwrite mistakes in examples (it was set to true so the 
	  overwrite mode defaulted to PHPVideoToolkit::OVERWRITE_EXISTING)
	- ADDED internal caching of PHPVideoToolkit::getFileInfo(); so if the data is asked 
	  to be generated more than one in the same script it only gets generated 
	  once.

[0.1.0] [02.03.2008] 
	- ADDED new constant PHPVideoToolkit::SIZE_SAS. Which stands for Same As Source,  
	  meaning ffmpeg will automatically convert the movie to a whatever format   
	  but preserve the size of the original movie.
	- CORRECTED error/comment spelling mistakes.
	- CHANGED PHPVideoToolkit::getFileInfo(); to use preg_match so it's more reliable, 
	  it also contains more information on the file.
	- ADDED public function setVideoAspectRatio. Sets the video aspect ratio. 
	  Takes one of three constants as an argument. PHPVideoToolkit::RATIO_STANDARD, 
	  PHPVideoToolkit::RATIO_WIDE, PHPVideoToolkit::RATIO_CINEMATIC
	- ADDED public function setVideoBitRate. Sets the video bitrate.
	- ADDED public function setVideoFormat. Sets a video codec. It should not 
	  be confused with PHPVideoToolkit::setFormat. It provides slightly different  
	  advanced functionality, most simple usage can just use PHPVideoToolkit::setFormat
	- ADDED public function setAudioFormat. Sets an audio codec.
	- ADDED public function setConstantQuality. Sets a constant encoding 
	  quality.
	- ADDED public function getFFmpegInfo. Gets the available data from ffmpeg 
	  and stores the output in PHPVideoToolkit::$ffmpeg_info (below).
	- ADDED PHPVideoToolkit::$ffmpeg_info static var to hold the output of 
	  PHPVideoToolkit::getFFmpegInfo();
	- ADDED public function getLastProcessTime and getProcessTime to retrieve 
	  the processing times of the ffmpeg calls.
	- ADDED adapter classes to provide simple functionality for ffmpeg newbies 
	  / quick solutions. Each option set can be supplied in the second 
	  argument as part of an array.
			VideoTo::PSP(); 	- Converts video into the PSP mp4 video.
			VideoTo::iPod(); 	- Converts video into the iPod mp4 video.
			VideoTo::FLV(); 	- Converts video into the Flash video (flv).
			VideoTo::Gif(); 	- Converts video into the animated gif.
								  (experimental as quality is poor)
	- CHANGED the way the processing works. The file is processed to the 
	  temp directory and is then checked for consistency before moving to 
	  the output directory.
	- CHANGED the return values of PHPVideoToolkit::execute(); It no longer returns 
	  just true or false. See class docs for more info.
	- CHANGED the third argument in PHPVideoToolkit::setOutput() from $overwrite to 
	  $overwrite_mode. Instead of a boolean value, it now takes one of three
	  constants
			ffmegp::OVERWRITE_FAIL		- means that if a conflict exists the 
									  	  process will result in and error.
			ffmegp::OVERWRITE_PRESERVE	- means that if a conflict exists the 
									  	  process will preserve the existing
									 	  file and report with 
										  PHPVideoToolkit::RESULT_OK_BUT_UNWRITABLE.
			ffmegp::OVERWRITE_EXISTING	- means that if a conflict exists the 
									  	  process will overwrite any existing 
										  file with the new file.
			ffmegp::OVERWRITE_UNIQUE	- means that every filename is 
										  prepended with a unique hash to
										  preserve the  existing filesystem.
	- MOVED error messages into a class variable for easier 
	  translation/changes.
	- CHANGED moveLog functionality to use rename instead of copy and unlink.

[0.0.9] [12.02.2008] 
	- Added new definition FFMPEG_MENCODER_BINARY to point to the mencoder 
	  binary.
	- Changed the behavior of setVideoOutputDimensions. it now accepts class
	  constants as preset sizes.
	- Added public function adjustVolume. Sets the audio volume.
	- Added public function extractAudio. Extracts audio from video.
	- Added public function disableAudio. Disables audio encoding.
	- Added public function getFileInfo. Access information about the media 
	  file.
	  Without using ffmpeg-php as it queries the binary directly.
	- Added 2 arguments to excecute. 
		argument 1 - $multi_pass_encode (boolean). Determines if ffmpeg should 
					 multipass encode. Can result in a better quality encode.
					 default false
		argument 2 - $log (boolean). Determines if the output of the query to 
					 the ffmpeg binary is logged. Note, any log file created 
					 is destroyed unless moved with PHPVideoToolkit::moveLog upon
					 destruct of the ffmpeg instance or on PHPVideoToolkit::reset.
					 default false
	- Added public function moveLog. Moves a log file.
	- Added public function readLog. Reads a log file and returns the data.
	- Changed external format definitions to internal class constants.
	- Changed external use high quality join flag to internal class constant.
	- Fixed bug in setFormat error message.
	- Fixed bug in execute.

[0.0.8] [07.08.2007] 
	- Added public functions secondsToTimecode & timecodeToSeconds. Translates
	  seconds into a timecode and visa versa.
	  ie. 82 => 00:01:22 & 00:01:22 => 82
	- Added public var image_output_timecode. Determines if any outputted
	  frames are re-stamped with the frames timecode if true.
	- Fixed bug in setOutput.

[0.0.7] [01.08.2007] 
    - Added FFMPEG_FORMAT_Y4MP format (yuv4mpegpipe).
    - Added extra information to install.txt
    - Added public function hasCommand.
	- Added public functions addVideo, addVideos
    - Changed the behavior of setInputFile to take into account the addVideos
	  function. It now can take multiple input files for joining as well as
	  the high quality join flag 'FFMPEG_USE_HQ_JOIN'.
    - Changed the behavior of setOutput. If the $output_name has a common 
      image extension then and no %d is found then an error is raised.
    - Changed all booleans from upper to lower case.
    
[0.0.5] [12.03.2007] 
    - Added FFMPEG_FORMAT_JPG format (mjpeg). Thanks Matthias.
    - Changed the behavior of extractFrames. It now accepts a boolean FALSE
      argument for $extract_end_timecode. 
      If it is given then all frames are exported from the timecode specified
      by $extract_begin_timecode. Thanks Matthias.
	- Added extra definition 'FFMPEG_WATERMARK_VHOOK' for the path to the
	  watermark vhook.
    - Added watermark support for both frames exports and videos. (Note: this
	  makes specific useage of vhook. If your ffmpeg binary has not been
	  compiled with --enable-vhook then this will not work.
    
[0.0.1] [02.03.2007] 
    - Initial version released

/* SVN FILE: $Id$ */