Releases: Zulko/moviepy
v2.2.1
v2.2.0
Fixes and requirements tweaks
What's Changed
- chore: skip metadata which not satisfied with "key:value" by @asd55667 in #2311
- Add flac extension by @jonata in #2218
- libx264 and prores as mov codecs by @gustawdaniel in #2219
- Fix attribute check by @take0x in #2216
- Add bg_radius to text boxes by @aaa3334 in #2270
- Fix GPU h264_nvenc encoding not working. by @xiaomofa in #2121
- Fix decorator-related slow performance by @bzczb in #2095
- Fix forgotten print by @OsaAjani in #2314
- Update list of maintainers by @OsaAjani in #2316
- Bump pillow dependency by @OsaAjani in #2317
- Update issue template by @OsaAjani in #2321
- Fix textclip cutting text by @OsaAjani in #2326
- Fix issue #2286 on TimeMirror and TimeSymmetrize by @OsaAjani in #2328
- Add exception on outside of boundaries subclip by @OsaAjani in #2319
- Add support for new argument ch_layout on ffmpeg >= 7 and make compatible with ffmpeg 7 by @OsaAjani in #2331
- Fix issue #2330 audio write wrong fps by @Implosiv3 in #2336
- Fix Freeze effect removing original start and end parameters by @OsaAjani in #2339
- Add support for default pillow font by @OsaAjani in #2344
- Update config.py check() to log correct binary name by @cerushdope in #2345
- Use audio codec for existing audiofile by @zalgo3 in #2346
- Fix wrong fps calculation by @OsaAjani in #2352
- Fix incoherent frame seek as describe in issue #2115 and pr #2117 by @OsaAjani in #2353
- BugFix: Fix the alignment of audio duration and video duration after concatenate_videoflips by @zyw241 in #2201
- Fix text without spaces overflowing TextClip boundaries by @OsaAjani in #2357
- Fix ffmpeg_reader not selecting a default stream by @bzczb in #2114
New Contributors
- @asd55667 made their first contribution in #2311
- @jonata made their first contribution in #2218
- @gustawdaniel made their first contribution in #2219
- @take0x made their first contribution in #2216
- @aaa3334 made their first contribution in #2270
- @xiaomofa made their first contribution in #2121
- @bzczb made their first contribution in #2095
- @Implosiv3 made their first contribution in #2336
- @cerushdope made their first contribution in #2345
- @zalgo3 made their first contribution in #2346
- @zyw241 made their first contribution in #2201
Full Changelog: v2.1.2...v2.2
v2.1.2
v2.1.2
Important Announcements
Transparency compositing and rendering have been completely fixed in this release. If you've experienced issues with transparency in the past, please try this update.
Added
- Codec extraction during ffmpeg meta parsing (if available).
Fixed
- Major refactor of ffmpeg reader and writer for transparency support.
- Overhaul of
CompositeVideoClipto properly handle transparency. - Fixed issue #2305: Changed
stroke_widthfrom float0.5to int1. - Fixed issue #2160: Crash when saving filenames starting with
-. - Fixed issue #2247: Incorrect default mask size of 1x1.
Upgrade now to take advantage of these fixes!
v2.1.1
What's Changed
- Make
FFMPEG_VideoReadermore robust to missing information. by @Breakthrough in #2253
Full Changelog: v2.1.0...v2.1.1
v2.1.0
What's Changed
- More api changes by @Zulko in #2255
- example tweaks by @Zulko in #2258
- Fix invalid option in docstring of TextClip, as mentionned in #2251 by @OsaAjani in #2254
- docs: 📝 State python 3.9 instead of 3.7 support in readme by @Paillat-dev in #2245
- Ensure
last_readis always set. by @Breakthrough in #2257
New Contributors
- @Paillat-dev made their first contribution in #2245
- @Breakthrough made their first contribution in #2257
Full Changelog: v2.0.0...v2.1.0
v2.0.0
What's Changed - a lot
First release to PyPI in 4 years, so here is an unfiltered list of contributions
- Start v2.0 branch. Remove support for Python 2.7 & 3.4. by @tburrows13 in #1103
- Remove support for Python 3.5 by @tburrows13 in #1106
- Apply and ensure Black formatting by @mgaitan in #1101
- Apply v1.0.2 changes to v2.0 by @tburrows13 in #1110
- Remove tqdm as a dependency by @tburrows13 in #1090
- Fixed name of optional dependency on README by @jonnekaunisto in #1113
- FFmpeg Writer: handle redirected logs when checking for errors by @declension in #890
- Fixed error message for build docs by @jonnekaunisto in #1118
- Add new 'Unreleased' section to CHANGELOG.md. by @tburrows13 in #1121
- Fix TextClip.list("color") returning an incorrect list of byte objects, not strings by @tburrows13 in #1119
- Fixed errors in docs by @jonnekaunisto in #1120
- Remove deprecated functions and parameters by @mgaitan in #1115
- Added encoding optional parameter to subtitle file loading feature by @aalkz in #1043
- Followup to TextClip.list() fix (#1119) by @tburrows13 in #1132
- Fix for
ColorClip.rotate()by @tburrows13 in #1139 - fixed bug with undefined variable by @jonnekaunisto in #1146
- Add test for detect_scenes by @scherroman in #589
- Fix undefined name warning in ez_setup.py by @tburrows13 in #1149
- deleted outdate opencv install instructions and fixed english syntax by @jonnekaunisto in #1148
- Add support for path-like objects with a decorator by @tburrows13 in #1137
- Fixed a typo by @spollard in #1153
- Fixing a few typos by @spollard in #1154
- Flake8 formatting cleanup by @tburrows13 in #1151
- Fix doc errors (closes #1000, #1156) by @tburrows13 in #1159
- Fix outdated docstrings and error strings by @tburrows13 in #1160
- Simpler custom configuration and better related docs by @mgaitan in #1109
- Allow setting tempfile path by @tburrows13 in #1144
- Use integer division for the resolution of the star worms example video by @jay3ss in #1173
- Improve VideoClip testing by inspecting numpy frame arrays by @tburrows13 in #1124
- MacOS CI test by @jonnekaunisto in #1172
- add missing clip arguement to docstring by @jonnekaunisto in #1179
- Fixed small spelling mistake by @spollard in #1181
- Fix AudioClip I/O by @MaigoAkisame in #1108
- updated dockerfile dependencies to come from setup.py by @jonnekaunisto in #1165
- Docs fixes: added code back into logo example and fixed a couple of typos by @kencochrane in #614
- Stabilize Video - New functionality by @gpantelis in #580
- fixed default value bug on ColorClip by @jonnekaunisto in #1147
- Fix write_videofile error handling and update write_audiofile to be comparable by @tburrows13 in #1164
- added video and audio bit rate by @crazyxw in #930
- Add VideoClip.set_layer() by @tburrows13 in #1176
- Update deprecated function in documentation by @Julian-O in #1190
- autodetect ImageMagick on windows by @Nex4rius in #1041
- FIX: concatenate - duration of the result by @knezi in #796
- Fix fundamental floating point error in Clip.iter_frames by @tburrows13 in #1195
- Call resize on mask when newsize is a function of time by @tburrows13 in #1200
- Fix appveyor build: remove pipenv by @tburrows13 in #1207
- Prevent exception when filename is given. by @obiwankennedy in #1201
- Fix Clip.fx docstring by @tburrows13 in #1211
- Fix color_gradient crash by @tburrows13 in #1212
- Fix Clip.fl docstring by @tburrows13 in #1214
- Use popen.communicate() to prevent subprocess hang by @tehKost in #684
- [ffmpeg_tools] removed period from ffmpeg_extract_subclip by @mdawar in #939
- Video duration fix by @sarjann in #1063
- Rework usage of FFMPEG_VideoReader's
posandlastread; FFMPEG_AudioReader.close_proc() -> close() by @tburrows13 in #1220 - Ability to set pixel format for video or image files by @Ricardo-HE in #1237
- Change file extension for audio file and resizing parameters during… by @jay3ss in #1241
- Fix spelling error in quick_presentation.rst by @jopdop30 in #1260
- Add Linux test to GitHub actions by @tburrows13 in #1287
- Correct CompositeVideoClip docstring (swap width, height ordering) by @btRooke in #1281
- Add ‘ignore’ for UTF8 decoding to avoid error on non-UTF8 characters by @chrisapplegate in #959
- Remove BitmapClip.set_fps and .set_duration by @tburrows13 in #1288
- Update dockerfile to modify policy.xml in-place by @TrippleCCC in #1304
- Fixed duration in meta data when generating subclips. by @hlzl in #1317
- Remove logger messages triggering CI failure by @tburrows13 in #1322
- Corrections to video duration detection by @tburrows13 in #1222
- Change docs and comments to reflect default fps_source changing from 'tbr' to 'fps' by @tburrows13 in #1327
- Add change_duration flag to Clip.set_fps() by @mxbi in #1329
- Add support for ReadTheDocs by @tburrows13 in #1328
- Fix incorrect behaviour from BitmapClip when fps != 1 by @tburrows13 in #1333
- Switch Black GitHub action to the official working version by @tburrows13 in #1337
- Add coreader function to VideoFileClip by @jkolbly in #1332
- Renaming methods, parameters and variables for increased usability, consistency and readability by @tburrows13 in #1170
- Fluent API for effects (monkeypatch as methods) by @mgaitan in #1105
- Fix 90 degrees rotation by @nicoeps in #1335
- Optimise clip compositing using PIL (replacement for #1157) by @tburrows13 in #1342
- Format files by @keikoro in #1349
- update, improve Contributing guidelines by @keikoro in #1352
- Fix typo in docs by @tomj in #1363
- Tests for loop using BitmapClip #1368 by @somstrom in #1370
- Update quick_recipes.rst by @whimxiqal in #1383
- docs: fix simple typo, tranformed -> transformed by @timgates42 in #1389
- Fix 'NameError' in 'docs/getting_started/videoclips.rst#Videoclip' example by @mondeja in #1405
- Move directory of test to temporal location and close clips by @mondeja in #1407
- Use temporal directory to write a video in test and close clips by @mondeja in #1408
- Update 'Imagemagick.exe' download URL in Windows tests by @mondeja in #1411
- Fix MacOSX tests with temporal workaround for python.app issue by @mondeja in #1412
- Remove autogenerated '.mp3' and '.log' files in tests by @mondeja in #1413
- Update README badges by @mondeja in #1415
- Update 'AudioClip' docstring example by @mondeja in #1423
- Remove Pipfile and Pipfile.lock by @tburrows13 in #1416
- Update 'dancing_knights.py' example by @mondeja in #1422
- Remove TravisCI related code from tests by @mondeja in #1417
- F...
v2.0.0.dev2
v2.0.0.dev2
There are still no major breaking changes compared to v1.0.3. Expect them to come in the next dev update.
Any new changes made to the master branch will now be instantly reflected at https://moviepy.readthedocs.io, which is where documentation for all versions will be in the future. [#1328]
Install with pip install moviepy --pre --upgrade.
Added
- New
pix_fmtparameter inVideoFileClip,VideoClip.write_videofile(),VideoClip.write_gif()that allows passing a custompix_fmtparameter such as"bgr24"to FFmpeg [#1237] - New
change_durationparameter inClip.set_fps()that allows changing the video speed to match the new fps [#1329]
Changed
ffmpeg_parse_infos()andVideoFileClipnow have optionaldecode_fileparameter that ensures that the detected duration is correct, but may take a long time to run [#1063, #1222]ffmpeg_parse_infos()andVideoFileClipnow usefpsmetadata instead oftbrto detect a video's fps value [#1222]FFMPEG_AudioReader.close_proc()->FFMPEG_AudioReader.close()for consistency withFFMPEG_VideoReader[#1220]
Fixed
- Fixed
ffmpeg_tools.ffmpeg_extract_subclipcreating clips with incorrect duration metadata [#1317] OSError: MoviePy error: failed to read the first frame of video file...would occasionally occur for no reason [#1220]- Fixed warnings being suppressed [#1191]
- Fixed
UnicodeDecodeErrorcrash when file metadata contained non-UTF8 characters [#959]
v2.0.0.dev1
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.pyand 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
.envfile [#1109] - Optional
encodingparameter inSubtitlesClip[#1043] - Added new
ffmpeg_stabilize_video()function inffmpeg_tools - Optional
temp_audiofile_pathparameter 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_infosadditionally returns"video_bitrate"and"audio_bitrate"values [#930]- Access to the source video's bitrate in a
VideoFileCliporAudioFileClipthroughvideoclip.reader.bitrateandaudioclip.reader.bitrate[#930]
Changed
vfx.scrollargumentswandhhave had their order swapped. The correct order is noww, hbut it is preferable to explicitly use keyword arguments- Removed extra
.in the output file name offfmpeg_extract_subclip()whentargetnameis 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.pyis 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()verboseparameter 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=Noneverbose_print()-> no replacementcolparameter 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_sizepreviously created clips with odd sizes [#1124]IndexErrorinvfx.freeze,vfx.time_mirrorandvfx.time_symmetrize[#1124]- Using
rotate()with aColorClipno longer crashes [#1139] AudioFileClipwould not generate audio identical to the original file [#1108]- Fixed
TypeErrorwhen usingfilenameinstead oftxtparameter inTextClip[#1201] - Several issues resulting from incorrect time values due to floating point errors [#1195], for example:
- Applying
resizewith a non-constantnewsizeto 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]
v1.0.3
v1.0.2
v1.0.2 (2020-03-26)
Note that this is likely to be the last release before v2.0, which will drop support for Python versions 2.7, 3.4 & 3.5 and will introduce other backwards-incompatible changes.
Notable bug fixes:
- Fixed bug that meant that some VideoFileClips were created without audio [#968]
- Fixed bug so now the
slide_outeffect works [#795]
Fixed bugs:
- Fixed potential crash trying to call the logger string as a function #1082 (tburrows13)
- Get ffmpeg to use all audio streams #1008 (vmaliaev)
- Reorder FFMPEG_VideoWriter command arguments #968 (ThePhonon)
- Test that the temporary audio file exists #958 (ybenitezf)
- Fix slide out #795 (knezi)
- Correct the error message to new filename. #1057 (jwg4)
Merged pull requests
Merged pull requests:
- Remove timer in stdout flushing test #1091 (tburrows13)
- Update github issue and PR templates #1087 (tburrows13)
- Clean up imports #1084 (tburrows13)
- refactor Pythonic sake #1077 (mgaitan)
- Upgrade pip by calling via python (in appveyor). #1067 (jwg4)
- Improve afx.audio_normalize documentation #1046 (dspinellis)
- Add Travis support for Python 3.7 and 3.8 #1018 (tburrows13)
- Hide pygame support prompt #1017 (tburrows13)
Closed issues
Closed issues:
- ImageSequenceClip write_videofile #1098
- Formatting code with Black #1097
- Make effects be callable classes #1096
- URGENT - Documentation is inaccessible #1086
- Drop support for python < 3.6 #1081
- TextClip filenotfounderror winerror2 #1080
- unable to create video from images #1074
- Crash on loading the video, windows 10 #1071
- Audio Issue while concatenate_videoclips'ing ImageClip and VideoFileClip (contains audio already) #1064
- AttributeError: 'NoneType' object has no attribute 'stdout' #1054
- Overlay a video on top of an image with Moviepy #1053
- get_frame fails if not an early frame #1052
- from google.colab import drive drive.mount('/content/drive') import cv2 import numpy as np from skimage import morphology from IPython import display import PIL image = cv2.imread('/content/drive/My Drive/CAR3/11.JPG',cv2.IMREAD_COLOR) from google.colab.patches import cv2_imshow #image = cv2.resize(image,(384,192)) cv2_imshow(image) #1051
- Segmentation fault (core dumped) #1048
- zip over two iter_frames functions doesn't render proper result #1047
- CompositeVideoClip([xxx]).rotate(90) ValueError: axes don't match array #1042
- to_soundarray Index error #1034
- write_videofile does not add audio #1032
- moviepy.video.io.VideoFileClip.VideoFileClip.set_audio does not set audio #1030
- loop for concatenate_videoclips #1027
- How to resize ImageClip? #1004
- Pygame pollutes stdio with spammy message #985
- Issue with ffmpeg version #934
- No release notes for 1.0.0? #917
- Imageio's new use of imageio-ffmpeg #908
ModuleNotFound: No module named 'imageio\_ffmpeg', or imageio v2.5.0 is breaking ffmpeg detection in config #906- CompositeVideoClip has no audio #876
- Handling of the ffmpeg dependency #859
- 'ffmpeg-linux64-v3.3.1' was not found on your computer; downloading it now. #839
- Typo in variable name in transitions.py(t_s instead of ts) #692
- version 0.2.3.2 TypeError: must be str, not bytes #650
- AWS Lambda - Moviepy Error - #638
- Adding conda-forge package #616
- Several YouTube examples in Gallery page are unable to load. #600
- ffmpeg not installed on Mac #595
- FFMPEG not downloaded #493
- Fix documentation #482
- Moviepy is producing garbled videos #356
- Help with contributing to the documentation? #327
- audio custom filter documentation? #267
- Mistake in doc, clips.html part. #136