3 Copyright (C) 2004 Ushodaya Enterprises Limited
4 Authors: Charles Yates <charles.yates@pandora.be>
5 Dan Dennedy <dan@dennedy.org>
6 Last Revision: 2004-03-20
12 Services marked as "(Proprietary)" are not distributed with the GPL version
22 ffmpeg libavformat based producer for video and audio.
26 'file' - a filename specification or URL in the form:
27 [{protocol}|{format}]:{resource}[?{format-parameter}[&{format-parameter}...]]
28 For example, video4linux:/dev/video1?width:320&height:240
29 Note: on the bash command line, & must be escaped as '\&'.
30 Also, note the use of ':' instead of '=' for parameters.
31 Use 'ffmpeg -formats' to see a list of supported protocols
36 Format parameters only appear to be useful with 'video4linux' or
37 'audio_device' formats. For 'video4linux' the parameters are
38 width, height, frame_rate, frame_rate_base, and standard (ntsc|pal).
39 For 'audio_device' the parameters are channels and sample_rate.
41 Initialisation Properties
43 int video_index - index of video stream to use (-1 is off)
44 int audio_index - index of audio stream to use (-1 is off)
50 string resource - file location
51 double fps - this is fixed at 25 for PAL currently
52 double source_fps - the framerate of the resource
53 double aspect_ratio - sample aspect ratio of the resource
54 - this is determined on every frame read
58 ffmpeg must be configured as --enable-shared and installed prior
59 to compilation of mlt.
63 Audio sync discrepancy with some content.
64 Not all libavformat supported formats are seekable.
65 Ogg Vorbis is currently broken.
66 MPEG seeking is inaccurate - doesn't seek to i-frames so you may
67 get junk for a few frames.
68 RAW DV seeking not supported.
69 Fails to play beyond first frame of video of sources with PTS not
70 starting at 0 (video4linux).
76 A friendly giant that likes to rhyme and throw rocks
80 'file' - a filename specification:
81 [{mlt-service}:]{resource} | {mlt-service}
82 - can also be the name of a producer service that can
83 accept the resource specified post construction.
85 Initialisation Properties
89 + all producer initialising properties
93 string resource - file location
94 + all producer read only properties
98 This producer has two roles:
100 1. it handles the mappings of all file names to the other
102 2. it attaches normalising filters (rescale, resize and resample)
103 to the producers (when necessary).
105 This producer simplifies many aspects of use. Essentially, it
106 ensures that a consumer will receive images and audio precisely as
122 A simple colour generator.
126 colour - A colour value is a hexadecimal representation of RGB plus
127 alpha channel as 0xrrggbbaa.
128 - Also colours can be the words: white, black, red, green,
130 - The default colour is black.
132 Initialisation Properties
153 Test case pipe based producer for video and audio.
157 'file' - produce a/v from file
158 v4l - produce a/v from video4linux and dsp device
160 Initialisation Properties
162 string video_type - "file" or "v4l"
163 string video_file - file or v4l device
164 string video_size - WxH of video to produce (default: "")
165 int video_loop - loop video until audio exhausted (default: 0)
166 string audio_type - "file" or "dsp"
167 string audio_file - file or dsp device
168 int audio_rate - audio frequency (default: 48000)
169 int audio_channels - audio channels (default: 2)
170 int audio_track - audio track to use (default: 0)
171 int audio_loop - loop audio until video exhausted (default: 0)
174 double fps - output frames per second (default: 25)
175 double aspect_ratio - aspect ratio of video
179 string resource - file or "v4l"
180 int end_of_clip - holds 1 when input is exhausted
188 in point setting is broken.
190 Implementation does not allow fast random access.
196 libdv based decoder for video and audio.
200 'file' - produce a/v from file
202 Initialisation Properties
209 string resource - file location
210 double fps - output frames per second
211 int length - duration of resource (in frames)
215 string quality - one of "best," "fast" or anything else chooses
224 DVCPRO is incorrectly identified as 16:9 aspect ratio. You must use
225 libdv from CVS or a post 0.101 release.
231 MainConcept based dv decoder for video and audio.
235 'file' - produce a/v from file
237 Initialisation Properties
244 string resource - file location
245 double fps - output frames per second
246 int length - duration of resource (in frames)
250 MainConcept DV or DVCPRO SDK, libdv.
251 "dv_sdk" installed parallel to mlt.
261 MainConcept based mpeg decoder for video and audio.
265 'file' - produce a/v from file
267 Initialisation Properties
274 string resource - file location
275 double fps - output frames per second
276 double aspect_ratio - sample aspect ratio of video
277 int length - duration of resource (in frames)
281 MainConcept MPEG SDK.
282 "mpeg_sdk_release" installed parallel to mlt.
298 Initialisation Properties
305 string resource - file location
306 double fps - output frames per second
307 double aspect_ratio - sample aspect ratio of video
308 int length - duration of resource (in frames)
322 A title generator that uses the Pango international text layout
323 and Freetype2 font renderer.
327 string file - a text file containing Pango markup, see:
328 http://developer.gnome.org/doc/API/2.0/pango/PangoMarkupFormat.html
329 - requires xml-like encoding special chars from:
330 <, >, & -to- <, >, &
334 Supplying a filename with extension ".txt" causes the Fezzik
335 producer to load with pango. If the filename begins with "+" the
336 pango producer interprets the filename as pango text. This is a
337 shortcut to embed titles in inigo commands. For westley, it is
338 recommended that you embed the title text in the property value.
340 Pango has builtin scaling. It will rescale the originally rendered
341 title to whatever the consumer requests. Therefore, it will lose
342 its aspect ratio if so requested, and it is up to the consumer to
343 request a proper width and height that maintains the image aspect.
345 Initialisation Properties
352 string markup - a string containing Pango markup see:
353 http://developer.gnome.org/doc/API/2.0/pango/PangoMarkupFormat.html
354 - requires xml-like encoding special chars from:
355 <, >, & -to- <, >, &
356 string fgcolour - an RGBA colour specification of the text
358 string bgcolour - an RGBA colour of the background rectangle
359 string align - paragraph alignment: left, centre, right
360 - also, numbers 0, 1 and 2 can be used respectively.
361 int pad - the number of pixels to pad the background rectangle
362 beyond edges of text. default 0.
363 string markup - see constructor argument
364 string text - non-markup string in UTF-8 encoding (can contain
365 markup chars un-encoded)
366 string font - the default typeface to use when not using markup.
367 default "Sans 48". FreeType2 renders at 72 dpi.
368 string encoding - the text encoding type of the input if not UTF-8.
369 - see 'iconv --list' for a list of possible inputs.
373 string resource - the text/markup file or "pango" if no file.
374 int real_width - the original, unscaled width of the rendered title.
375 int real_height - the original, unscaled height of the title.
376 int width - the last requested scaled image width.
377 int height - the last requested scaled image height.
381 libpango-1.0, libpangoft2-1.0, libfreetype, libgdk_pixbuf-2.0,
382 libglib-2.0, libgobject-2.0, libgmodule-2.0, libfontconfig.
386 The foreground and background Pango markup span attributes are not
388 Word wrapping is not supported.
394 A still graphics to video generator using gdk-pixbuf
398 'file' - The name of a graphics file loadable by
399 a gdk-pixbuf loader. see /usr/lib/gdk-pixbuf/loaders
400 definitely png, jpeg, tiff, pnm, and xpm
401 - If "%" in filename, the filename is used with sprintf
402 generate a filename from a counter for multi-file/flipbook
403 animation. The file sequence ends when numeric
405 - If filename contains "/.all.", suffix with an extension to
406 load all pictures with matching extension from a directory.
407 - If filename contains the string "<svg", then pixbuf tries
408 to load the filename as inline SVG XML, which is convenient
413 Pixbuf has builtin scaling. It will rescale the originally rendered
414 title to whatever the consumer requests. Therefore, it will lose
415 its aspect ratio if so requested, and it is up to the consumer to
416 request a proper width and height that maintains the image aspect.
418 Initialisation Properties
425 int ttl - how long (in frames) to repeat each picture in file
426 sequences. default is 25.
430 string resource - file location. See Constructor Argument above.
431 int real_width - the original, unscaled width of the rendered title.
432 int real_height - the original, unscaled height of the title.
433 int width - the last requested scaled image width.
434 int height - the last requested scaled image height.
438 libgdk_pixbuf-2.0, libglib-2.0, libgobject-2.0, libgmodule-2.0
442 XXX: in/out settings are incorrectly handled.
448 Reads a stream of contiguous PPM images.
452 command - a shell command to run something that produces ppm
455 Initialisation Properties
461 string resource - the command
469 Since it uses pipes, it is not compatible with bluefish.
475 Construct a service network from an XML description.
476 See docs/westley.txt.
480 URL - an XML text file containing westley XML (schema/DTD pending)
481 - Since westley files can be parameterised, the URL syntax is:
482 {file-name}[?{param-name}{'='|':'}{param-value}[&{param-name}{'='|':'}{param-value}...]]
483 A colon is allowed instead of an equal sign to pacify inigo,
484 who tokenises anything with an equal sign as a property
485 setting. Also, when running inigo from the shell, beware of
486 the '?' and shell filename expansion. You can surround the URL
487 with single quotations to prevent expansion. Finally, fezzik
488 will fail to match the filename when you use parameters, so
489 preface the url with 'westley:' to force fezzik to load with
494 string resource - file location
502 Non-referenced producers and playlists are not destroyed until the
503 network is destroyed.
504 A referenced producer or playlist must appear before the reference.
505 A filter that occurs before a producer has been defined causes a
512 OGG Vorbis file reader.
516 'file' - file to use (only .ogg supported at the moment)
518 Initialisation Properties
525 double fps - this is fixed at 25 for PAL currently
533 Fixed frame size (PAL audio chunks).
534 Doesn't cover ogg files with multiple, differing sections.
543 Shift the luma component using a constant value.
547 start - the constant floating point numeric value to apply.
550 Initialisation Properties
554 double start - see Constructor Argument above.
555 double end - the ending adjustment value. the filter interpolates
556 between the start and end adjustments over the
557 duration of the effect.
569 Does not go completely to black or white.
576 Copy audio from one channel to another channel.
580 to - the 0-indexed channel to copy into, default is 1.
585 int from - the channel from which to copy, default is 0.
601 Deinterlace a frame consisting of two fields using bob, weave,
602 greedy, one-field, and linear blend methods. This code is
603 appropriated from the Xine XV video output plugin.
607 method - a string containing the deinterlace method: bob, weave,
608 greedy, onefield, or linearblend. The default is
611 Initialisation Properties
626 If the frame properties "progressive" or "consumer_progressive"
627 are non-zero, then the filter is not applied. Also, if applied,
628 this sets the frame property "progressive" to 1.
636 Not a bug, but it only provides fair quality.
643 Adjust image luma using a non-linear power-law curve
647 gamma - a floating point value. The default is 1.0, or none.
649 Initialisation Properties
656 double gamma - the exponential factor of the power-law curve
671 Convert colour image to greyscale
677 Initialisation Properties
698 Applies a luma transition between the current and next frames.
699 Useful for transitions from a slideshow created using producer
706 Initialisation Properties
717 int period - how long to wait between success iterations of the
718 transition. For best results set this to a multiple
719 of ttl used in pixbuf. The default is 24.
721 luma. - all properties beginning with "luma." are passed to the
722 encapsulated luma transition. For example, luma.out controls
723 the duration of the wipe.
727 transition_luma and its dependencies
738 Provides various mirror and image reversing effects.
742 mirror - horizontal, vertical, diagonal, flip, flop
744 Initialisation Properties
746 int reverse - being 0 or 1
777 Initialisation Properties
779 string start - in the format X,Y:WxH[:PWxPY]
780 - PWxPY is the size of the averaging region in pixels.
781 string end - in the format X,Y:WxH[:PWxPY]
801 Apply one or filters to a region of the video image. The region
802 can be shaped as well using the alpha channel of another producer.
806 resource - A file whose alpha channel will "shape" the region.
807 - The string "circle" is a shortcut but it requires pixbuf with
808 the librsvg loader. The circle is automatically stretched
809 to the region to create an ellipse.
811 Initialisation Properties
815 plus and region transition properties
819 see the region transition
827 "circle" is unpredictable in the absence of the librsvg pixbuf loader.
834 Adjust an audio stream's sampling rate, and duplicate channels if
835 producer provides less than consumer requested.
837 This filter is automatically invoked by Fezzik for the sake of
838 normalisation over inputs and with the consumer.
842 frequency - a numeric value for the new sample rate
844 Initialisation Properties
851 int frequency - the target sample rate
859 Assumes 2 channels during libsamplerate initialisation. Untested
866 Scale the producer video frame size to match the consumer.
867 This filter is automatically invoked by Fezzik in order to normalise
872 interpolation - the rescaling method, one of:
873 nearest (lowest quality, fastest),
875 bilinear (default; good quality, moderate speed),
876 hyper (best quality, slowest).
878 Initialisation Properties
885 string interpolation - see constructor argument above
887 If a property "consumer_aspect_ratio" exists on the frame, then
888 rescaler normalises the producer's aspect ratio and maximises the
889 size of the frame, but may not produce the consumer's requested
890 dimension. Therefore, this option works best in conjunction with the
891 resize filter. This behavior can be disabled by another service by
892 either removing the property, setting it to zero, or setting
893 frame property "distort" to 1.
897 libgdk_pixbuf-2.0, libglib-2.0, libgobject-2.0, libgmodule-2.0
907 Image scaling and padding and field order adjustment.
911 Normally resize is used to pad the producer's
912 output to what the consumer has requested after an upstream rescale
913 filter first scales the image to maximise usage of the image area.
914 This filter also adjusts the field order to lower field first
915 if the frame property "top_field_first" has been set to 1.
916 Therefore, when done, it sets the top_field_first to 0.
917 This filter is automatically invoked by Fezzik as part of image
918 sample aspect ratio normalisation.
922 scale - "affine" to use affine transform scaling, otherwise
925 Initialisation Properties
940 Assumes lower field first output.
946 Adjust an audio stream's volume level
950 gain - a string containing one of:
951 - a floating point value of the gain adjustment
952 - a numeric value with the suffix "dB" to adjust in terms of decibels
953 - "normalise" to normalise the volume to the target amplitude -12dBFS
955 Initialisation Properties
959 int window - the number of video frames over which to smooth normalisation.
964 string gain - same as constructor argument above
966 string normalise - normalise the volume to the amplitude:
967 - a numeric value with the suffix "dB" to set amplitude in decibels
968 - a floating point value of the relative volume
969 - an unspecified value uses the default -12dBFS
971 string limiter - limit all samples above:
972 - a numeric value with the suffix "dB"
973 - a floating point value ( dB = 20 * log10(x) )
974 - an unspecified value uses the default -6dBFS
976 double max_gain - a floating point or decibel value of the maximum gain that
977 can be applied during normalisation.
978 - an unspecified value uses the default 20dB
980 string end - a gain value just like the gain property above.
981 This causes the gain to be interpolated from 'gain' to 'end'
984 int window - the size of the normalising smoothing buffer in video frame units.
985 - the smoothing buffer prevents erratic gain changes.
986 - the default value is 75 video frames.
988 gain can be applied as a factor to the normalise amplitude!
1002 Add a watermark to the frames.
1004 Constructor Argument
1006 resource - the producer to use (ie: a .png)
1008 Initialisation Properties
1010 string resource - the producer to use
1011 string factory - producer required for the resource ('fezzik')
1012 string geometry - composite geometry
1013 string distort - control scaling
1023 mlt core modules and optionally, fezzik
1036 A key-framable alpha-channel compositor for two frames.
1040 Performs dissolves and luma wipes in addition to alpha compositing.
1042 By default, the aspect ratio of the B frame is respected and the
1043 size portion of the geometry specification simply defines a
1046 This performs field-based rendering unless the A frame property
1047 "progressive" or "consumer_progressive" or the transition property
1048 "progressive" is set to 1.
1050 Constructor Argument
1052 string start - a geometry specification as X,Y:WxH[!][:mix]
1053 - X, Y, W, H are assumed to pixel units unless they
1055 - '!' is a shortcut to specify distort, see below.
1056 - mix is always a 2 digit percentage, defaults to 100.
1057 - default is "85%,5%:10%x10%"
1059 Initialisation Properties
1061 string end - the ending size and position.
1062 string key[F] - X,Y:WxH[:mix] - set a key frame for geometry between
1063 the in and out. F is a frame number and can be
1064 negative to make it relative to the out point.
1067 string factory - The name of a factory service used as a non-PGM
1068 producer loader. The default is fezzik.
1070 Read Only Properties
1076 int progressive - set to 1 to disable field-based rendering.
1077 string distort - when set, causes the B frame image to fill the WxH
1078 completely with no regard to B's aspect ratio.
1079 string halign - when not distorting, set the horizontal alignment
1080 of B within the geometry rectangle.
1081 - one of: left (0), centre (1), or right (2).
1082 - the default is left.
1083 string valign - when not distorting, set the vertical alignment of
1084 B within the geometry rectangle.
1085 - one of: top (0), middle (1), or bottom (2).
1086 - the default is top.
1087 string luma - the luma map file name. If not supplied, a dissolve.
1088 double softness - only when using a luma map, how soft to make the
1089 edges between A and B. 0.0 = no softness. 1.0 =
1091 Any property starting with "luma." is passed to the non-PGM luma
1100 Assumes lower field first during field rendering.
1106 A generic dissolve and wipe transition processor.
1111 from how it uses a grayscale "map" file. As the luma value varies
1112 over time, a threshold filter is applied to the map to determine
1113 what parts of frame A vs. frame B to show. It reads PGM files
1114 up to 16 bits! Alternatively, it can use the first frame from any
1115 producer that outputs yuv, but it will be limited to the luma
1116 gamut of 220 values.
1117 This performs field-based rendering unless the A frame property
1118 "progressive" or "consumer_progressive" or the transition property
1119 "progressive" is set to 1.
1121 Constructor Argument
1123 string resource - the luma map file name - either PGM or any other
1125 - If not supplied, a dissolve.
1127 Initialisation Properties
1131 string factory - The name of a factory service used as a non-PGM
1132 producer loader. The default is Fezzik.
1136 string resource - same as above
1137 double softness - only when using a luma map, how soft to make the
1138 edges between A and B. 0.0 = no softness. 1.0 =
1140 int reverse - reverse the direction of the transition.
1141 Any property starting with "producer." is passed to the non-PGM luma
1144 Read Only Properties
1154 Assumes lower field first output.
1160 An two stream audio mixer.
1162 Constructor Argument
1166 Initalisation Properties
1173 double start - the mix level to apply to the second frame.
1174 - any negative value causes an automatic crossfade from 0 to 1.
1175 double end - the ending value of the mix level. mix level will be interpolated
1176 from start to end over the in-out range.
1177 int reverse - set to 1 to reverse the direction of the mix.
1179 Read Only Properties
1189 Samples from the longer of the two frames are discarded.
1196 Apply zero or more filters to B frame as it is composited onto
1197 a region of the A frame. The "shape" of the region can be defined
1198 by the alpha channel of a third producer.
1200 Constructor Argument
1202 resource - a shape producer
1204 Initialisation Properties
1206 string resource - nothing is rectangle, "circle" is a pixbuf-
1207 generated SVG circle, anything else is loaded by the factory.
1208 string factory - the service that creates the shape producer.
1209 - the default is fezzik.
1210 string filter[N] - one or more filters to apply. All filter
1211 properties are passed using the same filter "key"
1212 Any property starting with "composite." is passed to the
1213 encapsulated composite transition.
1215 Read Only Properties
1221 transition_composite
1235 Multiformat transcoding consumer.
1237 Constructor Argument
1239 string target - the filename to write to, e.g. test.mpeg.
1241 Initialisation Properties
1243 int buffer - the number of frames to buffer, minimum 1, default 25.
1244 string rescale - a rescale method, see the Filters/rescale.
1245 int progressive - indicates whether to use progressive or field-
1246 based rendering, default 0 (off).
1248 Read Only Properties
1260 bluefish (Proprietary)
1264 BlueFish444 audio and video output module.
1266 Constructor Argument
1268 card - a numeric card id starting at 1, default is 1.
1270 Initialisation Properties
1272 string standard - "PAL" (default) or "NTSC"
1273 - default is based upon MLT_NORMALISATION
1274 environment variable, which defaults to PAL.
1275 int frames - the number of DMA video frames. default is 8.
1276 minimum is 2. maximum on my system is 11.
1277 int buffer - the number of frames to buffer within MLT, minimum 1,
1279 string rescale - a rescale method, see the Filters/rescale.
1281 Read Only Properties
1287 BlueVelvet SDK installed parallel to mlt in "bluefish."
1291 Does not work with any service that uses pipes!
1293 If mlt crashes, you might need to reload the BlueDriver kernel
1294 module due to unreleased DMA buffers.
1296 Only supports 2 channel audio at the moment.
1304 Constructor Argument
1306 string target - the filename to write to, e.g. /dev/dv1394.
1308 Initialisation Properties
1310 int buffer - the number of frames to buffer, minimum 1, default 25.
1311 string rescale - a rescale method, see the Filters/rescale.
1315 int progressive - indicates whether to use progressive or field-
1316 based rendering, default 0 (off).
1318 Read Only Properties
1334 Simple DirectMedia Layer audio and video output module.
1336 Constructor Argument
1338 string video_standard - "PAL" (default), "NTSC", or "WxH"
1340 Initialisation Properties
1342 int buffer - the number of frames to buffer, minimum 1, default 25.
1343 string rescale - a rescale method, see the Filters/rescale.
1344 - Hint: "none" works very good with SDL output.
1348 double volume - audio level factor
1349 int video_off - if 1, disable video output
1350 int audio_off - if 1, disable audio output
1351 int scale_overlay - if 1, resample video from source pixel aspect
1352 ratio to square pixels.
1353 int progressive - indicates whether to use progressive or field-
1354 based rendering, default 0 (off).
1356 Read Only Properties
1362 libSDL-1.2, libasound, libaudio, libXt, libX11, libXext, libSM, libICE
1372 Serialise the service network to XML.
1373 See docs/westley.txt for more information.
1375 Constructor Argument
1377 resource - the name of a file in which to store the XML.
1378 - stdout is default.
1380 Initialisation Properties
1382 string resource - same as above.
1390 Untested arbitrary nesting of multitracks and playlists.
1391 Property "id" is generated as service type followed by number if
1392 no property named "id" exists, but it fails to guarantee uniqueness.