v2.0.0.dev1 (2020-06-04)
This development version introduces many bug-fixes and changes. Please note that there may be large backwards-incompatible changes between dev versions!
The online documentation has not been updated to reflect the changes in the v2.0.0 branch, so for help on how to use the new features please refer to the docstrings in the source code.
Install with pip install moviepy --pre --upgrade
.
Important Announcements
- Support removed for Python versions 2.7, 3.4 & 3.5 [#1103, #1106]
- If you were previously setting custom locations for FFmpeg or ImageMagick in
config_defaults.py
and MoviePy still cannot autodetect the binaries, you will need to switch to the new method using enviroment variables. [#1109] - All previously deprecated methods and parameters have been removed [#1115]
Added
- BitmapClip allows creating of custom frames using strings of letters
- Clips can now be tested for equality with other clips using
==
. This checks whether every frame of the two clips are identical - Support for path-like objects as an option wherever filenames are passed in as arguments [#1137]
- Autodetect ImageMagick executable on Windows [#1109]
- Optionally configure paths to FFmpeg and ImageMagick binaries with environment variables or a
.env
file [#1109] - Optional
encoding
parameter inSubtitlesClip
[#1043] - Added new
ffmpeg_stabilize_video()
function inffmpeg_tools
- Optional
temp_audiofile_path
parameter inVideoClip.write_videofile()
to specify where the temporary audiofile should be created [#1144] VideoClip.set_layer()
to specify the layer of the clip for use when creating aCompositeVideoClip
[#1176]ffmpeg_parse_infos
additionally returns"video_bitrate"
and"audio_bitrate"
values [#930]- Access to the source video's bitrate in a
VideoFileClip
orAudioFileClip
throughvideoclip.reader.bitrate
andaudioclip.reader.bitrate
[#930]
Changed
vfx.scroll
argumentsw
andh
have had their order swapped. The correct order is noww, h
but it is preferable to explicitly use keyword arguments- Removed extra
.
in the output file name offfmpeg_extract_subclip()
whentargetname
is not specified [#939]
Removed
- Support removed for Python versions 2.7, 3.4 & 3.5
- Setting paths to ImageMagick and FFMpeg binaries in
config_defaults.py
is no longer possible [#1109] - Removed
config.get_setting()
andconfig.change_settings()
functions [#1109] - All previously deprecated methods and parameters [#1115]:
AudioClip.to_audiofile()
-> useAudioClip.write_audiofile()
VideoClip.to_videofile()
-> useVideoClip.write_videofile()
VideoClip.to_images_sequence()
-> useVideoClip.write_images_sequence()
concatenate()
-> useconcatenate_videoclips()
verbose
parameter inAudioClip.write_audiofile()
,ffmpeg_audiowriter()
,VideoFileClip()
,VideoClip.write_videofile()
,VideoClip.write_images_sequence()
,ffmpeg_write_video()
,write_gif()
,write_gif_with_tempfiles()
,write_gif_with_image_io()
-> Instead ofverbose=False
, uselogger=None
verbose_print()
-> no replacementcol
parameter inColorClip()
-> usecolor
Fixed
- When using
VideoClip.write_videofile()
withwrite_logfile=True
, errors would not be properly reported [#890] TextClip.list("color")
now returns a list of bytes, not strings [#1119]TextClip.search("colorname", "color")
does not crash with a TypeError [#1119]vfx.even_size
previously created clips with odd sizes [#1124]IndexError
invfx.freeze
,vfx.time_mirror
andvfx.time_symmetrize
[#1124]- Using
rotate()
with aColorClip
no longer crashes [#1139] AudioFileClip
would not generate audio identical to the original file [#1108]- Fixed
TypeError
when usingfilename
instead oftxt
parameter inTextClip
[#1201] - Several issues resulting from incorrect time values due to floating point errors [#1195], for example:
- Applying
resize
with a non-constantnewsize
to a clip with a mask would remove the mask [#1200] - Using
color_gradient()
would crash withValueError: The truth value of an array with more than one element is ambiguous
[#1212]