All Versions
Latest Version
Avg Release Cycle
117 days
Latest Release
2093 days ago

Changelog History
Page 1

  • v2.3.5 Changes

    May 31, 2018

    Full Changelog

    πŸ›  Fixed bugs:

    • Removed Hz from audio_fps match in ffmpeg_parse_infos #665 (qmac)

    Closed issues:

    • 100% of GIF does not convert to MP4, gets cut short. #802
    • How to add audio track to MP4? #794
    • πŸ‘ ffmpeg 4.0 NVIDIA NVDEC-accelerated Support ? #790
    • Help!!!! errors during installation on Mac #788
    • πŸ—„ Blink fx uses deprecated(?) method with\_mask\(\) #786
    • Built-in file downloader downloads files repeatedly? #779
    • Error in compositing video and SubtitlesClip by CompositeVideoClip #778
    • SubtitlesClip #777
    • Video Background #774

    πŸ”€ Merged pull requests:

  • v2.0.0.dev2 Changes

    October 05, 2020


    Full Changelog

    ⚑️ 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, which is where documentation for all versions will be in the future. [#1328]
    ⬆️ Install with pip install moviepy --pre --upgrade.

    βž• Added

    • New pix_fmt parameter in VideoFileClip, VideoClip.write_videofile(), VideoClip.write_gif() that allows passing a custom pix_fmt parameter such as "bgr24" to FFmpeg [#1237]
    • New change_duration parameter in Clip.set_fps() that allows changing the video speed to match the new fps [#1329]

    πŸ”„ Changed

    • πŸ“œ ffmpeg_parse_infos() and VideoFileClip now have optional decode_file parameter that ensures that the detected duration is correct, but may take a long time to run [#1063, #1222]
    • πŸ“œ ffmpeg_parse_infos() and VideoFileClip now use fps metadata instead of tbr to detect a video's fps value [#1222]
    • FFMPEG_AudioReader.close_proc() -> FFMPEG_AudioReader.close() for consistency with FFMPEG_VideoReader [#1220]

    πŸ›  Fixed

    • Fixed ffmpeg_tools.ffmpeg_extract_subclip creating 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 UnicodeDecodeError crash when file metadata contained non-UTF8 characters [#959]
  • v2.0.0.dev1 Changes

    June 04, 2020

    Full Changelog

    πŸ›  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
    • 0️⃣ If you were previously setting custom locations for FFmpeg or ImageMagick in 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 <!-- for new features -->

    • 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 in SubtitlesClip #1043
    • Added new ffmpeg_stabilize_video() function in ffmpeg_tools
    • Optional temp_audiofile_path parameter in VideoClip.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 a CompositeVideoClip #1176
    • πŸ“œ ffmpeg_parse_infos additionally returns "video_bitrate" and "audio_bitrate" values #930
    • Access to the source video's bitrate in a VideoFileClip or AudioFileClip through videoclip.reader.bitrate and audioclip.reader.bitrate #930

    πŸ”„ Changed <!-- for changes in existing functionality -->

    • vfx.scroll arguments w and h have had their order swapped. The correct order is now w, h but it is preferable to explicitly use keyword arguments
    • Removed extra . in the output file name of ffmpeg_extract_subclip() when targetname is not specified #939

    βœ‚ Removed <!-- for now removed features -->

    • πŸ‘Œ Support removed for Python versions 2.7, 3.4 & 3.5
    • 0️⃣ Setting paths to ImageMagick and FFMpeg binaries in is no longer possible #1109
    • Removed config.get_setting() and config.change_settings() functions #1109
    • πŸ—„ All previously deprecated methods and parameters #1115:
      • AudioClip.to_audiofile() -> use AudioClip.write_audiofile()
      • VideoClip.to_videofile() -> use VideoClip.write_videofile()
      • VideoClip.to_images_sequence() -> use VideoClip.write_images_sequence()
      • concatenate() -> use concatenate_videoclips()
      • verbose parameter in AudioClip.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 of verbose=False, use logger=None
      • verbose_print() -> no replacement
      • col parameter in ColorClip() -> use color

    πŸ›  Fixed <!-- for any bug fixes -->

    • When using VideoClip.write_videofile() with write_logfile=True, errors would not be properly reported #890
    • TextClip.list("color") now returns a list of bytes, not strings #1119
    •"colorname", "color") does not crash with a TypeError #1119
    • vfx.even_size previously created clips with odd sizes #1124
    • IndexError in vfx.freeze, vfx.time_mirror and vfx.time_symmetrize #1124
    • Using rotate() with a ColorClip no longer crashes #1139
    • AudioFileClip would not generate audio identical to the original file #1108
    • πŸ›  Fixed TypeError when using filename instead of txt parameter in TextClip #1201
    • Several issues resulting from incorrect time values due to floating point errors #1195, for example:
      • Blank frames at the end of clips #210
      • Sometimes getting IndexError: list index out of range when using concatenate_videoclips #646
    • 🚚 Applying resize with a non-constant newsize to a clip with a mask would remove the mask #1200
    • Using color_gradient() would crash with ValueError: The truth value of an array with more than one element is ambiguous #1212
  • v1.0.3 Changes

    May 07, 2020

    v1.0.3 (2020-05-07)

    Full Changelog

    πŸš‘ Bonus release to fix critical error when working with audio: AttributeError: 'NoneType' object has no attribute 'stdout' #1185

  • v1.0.2 Changes

    March 26, 2020

    v1.0.2 (2020-03-26)

    Full Changelog

    πŸš€ 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_out effect 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:

    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
    • 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 instead of ts) #692
    • πŸ”– version 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
  • v1.0.1 Changes

    October 01, 2019

    v1.0.1 (2019-10-01)

    Full Changelog

    πŸ†• New features

    • βž• Added support for Windows CI
    • πŸ›  Lots of bug fixes

    Full details

    πŸ”€ Merged pull requests πŸ”€ Merged pull requests: ⚑️ Update maintainer list in the README #1022 (tburrows13) πŸ“š fixed small error in 'Clip' documentation #1002 (thomasmatt88) Specify Coverage version explicitly. #987 (Julian-O) ⚑️ Updating Docs for ImageMagick Installing Guide #980 (ABODFTW) πŸ›  Several ImageMagick related bug fixes #972 (KiLLAAA) 🏁 More resilient Windows CI regarding fetching ImageMagick binaries #941 (Overdrivr) 🚧 WIP: Auto-detect image magick latest 6.9.X-Y version #936 (Overdrivr) 🏁 Windows-based testing #931 (Overdrivr) Fix formatting in logger #929 (tnoff) Fix for #926 #927 (Overdrivr) Invalid video URL in docs/getting_started/compositing #921 (gepcel) πŸ“¦ Do not install tests in site-packages #880 (cgohlke) FIX changed order of specifications -ss befor -i for ffmpeg_extract_subclip() #848 (grszkthfr) Closed issues Closed issues: Thoughts on re-routing tqdm progress bar for external use? #412 Progress bar #128 website video examples broken videos #1019 Audio glitches when using concatenate_videoclips. #1005 txt_clip = TextClip(filename='') --bug:TypeError: stat: path should be string, bytes, os.PathLike or integer, not NoneType #984 txt_clip = TextClip(filename='') --bug:TypeError: stat: path should be string, bytes, os.PathLike or integer, not NoneType #983 txt_clip = TextClip(filename='')path should be string, bytes, os.PathLike or integer, not NoneType #982 write_videofile writes blank black when writing grayscale #973 i dont understand this question #967 Thank you guys! #957 Saving an opencv stream #953 Issue with reader not being defined #950 🏁 On Windows, ImageMagick needs to be installed with Utility mode for the convert.exe file to exist #937 extract subtitles #932 πŸ“œ ffmpeg_parse_infos silently hangs on Windows when MP4 file contains enough metadata #926 crop missing from #914 Segmentation Error on VPS #912 Error when installing with imageio #911 Backwards compatibility #889 frozen seconds in beginning of subclip using ffmpeg_extract_subclip() #847 🐧 [Errno 3] No such process : on Windows Sub Linux (ubuntu 16.x) #765 Progress bar newline error in Jupyter #740 Refer to magick on #689 πŸ”§ Configure Appveyor support #628 tqdm progress bar write_videofile send to iterator #568 ffmpeg_extract_subclip returns black frames #508 🏁 Windows: specifying path to ImageMagick in #378 AttributeError: 'NoneType' object has no attribute 'start' #191 ImageMagick write gif success but no file found #113

  • v1.0.0 Changes

    February 17, 2019

    v1.0.0 (2019-02-17)

    Full Changelog

    πŸ†• New features

    πŸ‘ Moviepy now supports much better progress bars, using Proglog. Support for custom callbacks and more!

    Full details

    πŸ”€ Merged pull requests New version of imageio with imageio_ffmpeg for python 3.4+ #907 (Zulko) fix typo that introduces audio regression #894 (chrox) fixing the git remote syntax in documentions #887 (ishandutta2007) πŸ‘ modified max duration error for better understanding #875 (kapilkd13) πŸ›  Fixed typo in docstring for VideoClip class #871 (Armcollector) Fix a small typing error #845 (yuvallanger) Closed issues Can't overlay gizeh animation onto video with transparency/mask #898 [] Garbled audio when exporting mp3 from mp4? #891 Error with VideoFileClip(filePath) #868 I am trying to run this code #867 πŸ‘» Out of memory exception #862 simple problem on the first step: importing moviepy.editor #852 MoviePy insert multiple images in a video #840 🏁 Videogrep can't works with Moviepy in Windows #834 File "<stdin>", line 1 error #832 ImageMagick error - Ubuntu 16.04 #831 Combining thousands of small clips into one file #827 TypeError: 'ImageClip' object is not iterable #824 OSError: [WinError 6] The handle is invalid... concatenating clips #823 How to add audio tracks. not to replace it. #822 Missing 'ffmpeg-win32-v3.2.4.exe' #821 No sound with an audio clip add to an video in quicktime #820 Pip fails when trying to install #812 PermissionError after trying to delete a file after it's purpose is done #810 video clip from URI #780 Fails on FreeBSD #756 inconsistent behaviour of clip.get_frame() #751 Error with write_videofile #727 Trying to use moviepy on lambda, but has problem with ffmpeg #642 Unexpected Behavior With negative t_start in Subclip #341 Could not find a format to read the specified file in mode 'i' #219 🏁 WindowsError[5] and AttributeError Exception #170 Can't make VideoFileClip 'utf8' #169 Rendered output missing first frame #155 Incorrect output when concatenate_videoclips two quicktime videos #144 a bytes object is recognised as a string #120

  • v0.2.3.5 Changes

    May 31, 2018

    v2.3.5 (2018-05-31)

    Full Changelog

    πŸ†• New features

    Full details

    πŸ”€ Merged pull requests πŸ›  Fixed bugs: Removed Hz from audio_fps match in ffmpeg_parse_infos #665 (qmac) πŸ”€ Merged pull requests: Progress bar optional for GIF creation #799 (mdfirman) Added contributing guide and issue template #792 (tburrows13) Closed issues Closed issues: 100% of GIF does not convert to MP4, gets cut short. #802 How to add audio track to MP4? #794 πŸ‘ ffmpeg 4.0 NVIDIA NVDEC-accelerated Support ? #790 Help!!!! errors during installation on Mac #788 πŸ—„ Blink fx uses deprecated(?) method with_mask() #786 Built-in file downloader downloads files repeatedly? #779 Error in compositing video and SubtitlesClip by CompositeVideoClip #778 SubtitlesClip #777 Video Background #774

  • v0.2.3.4 Changes

    April 22, 2018

    v0.2.3.4 (2018-04-22)

    Full Changelog

    πŸ†• New features

    • βž• Added pcm_s24le codec for .wav files (#769)
    • βž• Added fullscreen parameter to preview (#773)
    • βž• Added support for closing previews with quit button (#773)

    Full details

    πŸ”€ Merged pull requests πŸ”€ Merged pull requests: Added fullscreen parameter to preview #773 (tburrows13) add pcm_s24le codec #769 (lsde) Closed issues Closed issues: fail to install #771 install moviepy #758 How to prepend hexadecimal data to a binary file? #757 πŸš€ It’s time for a new release #742 wrong video duration value when concatenating videos with method = compose #574

  • v0.2.3.3 Changes

    April 18, 2018

    πŸ”„ Change Log

    v0.2.3.3 (2018-04-17)

    Full Changelog

    Main Changes

    • βœ‚ Removed support for Python 3.3 (#688, #713)
    • 🏁 Lots of bug fixes, including better support for Python 3.x and Windows
    • πŸ“š Some documentation updates
    • βœ… Test coverage increased from 53% to 65%
    • πŸ›  Credits tool fixed. Check it out here! πŸ”€ Merged pull requests πŸ›  Fixed bugs: Issue with nesting context managers #655 Is there one potential bug in FFMPEG_READER? #546 vfx.scroll giving TypeError: slice indices must be integers or None or have an index method #527 IndexError when converting audio to_soundarray() #246 Unable to use unicode strings with Python 2 #76 Added ffmpeg download when importing moviepy.editor #731 (tburrows13) πŸ›  Fixed bugs, neater code, changed docstrings in audiofiles #722 (tburrows13) Resolve undefined name execfile in Python 3 #718 (cclauss) βœ… Fix credits, added tests #716 (tburrows13) res β€”> size to align with line 62 #710 (cclauss) Add gap=0 to align with lines 40, 97, and 98 #709 (cclauss) import numpy as np for lines 151 and 178 #708 (cclauss) Convert to valid Python #707 (cclauss) Added missing '%' operator for string formatting. #686 (taylorjdawson) Addressing #655 #656 (gyglim) initialize proc to None #637 (gyglim) sometimes tempfile.tempdir is None, so use tempfile.gettempdir() function instead #633 (earney) Issue629 #630 (Julian-O) Fixed bug in Clip.set_duration() #613 (kencochrane) Fixed typo in the slide_out transition #612 (kencochrane) Exceptions do not have a .message attribute. #603 (Julian-O) Issue #574, fix duration of masks when using concatenate(.., method="compose") #585 (earney) Fix out of bounds error #570 (shawwn) πŸ›  fixed ffmpeg error reporting on Python 3 #565 (narfdotpl) Add int() wrapper to scroll to prevent floats #528 (tburrows13) Fix issue #464, repeated/skipped frames in ImageSequenceClip #494 (neitzal) πŸ›  fixes #248 issue with VideoFileClip() not reading all frames #251 (aldilaff) Implemented enhancements: Use feature detection instead of version detection #721 (cclauss) Fixed Optional Progress Bar in cuts/detect_scenes #587 (scherroman) πŸ— Fix travis build and enable pip caching #561 (mbeacom) 0️⃣ Avoid mutable default arguments #553 (mbeacom) πŸ‘» add ImageSequenceClip image size exception #550 (earney) πŸ”€ Merged pull requests: πŸ“„ pep8 and a change to docstring #754 (tburrows13) πŸ‘· Make TextClip work on Travis CI #747 (tburrows13) Added tests, new duration arg in to_ImageClip() #724 (tburrows13) let there be (more) colour #723 (bashu) Resolve undefined name unicode in Python 3 #717 (cclauss) PEP 8 #715 (tburrows13) Added info about tag wiki #714 (tburrows13) 🚚 Remove testing support for Python 3.3, closes #688 #713 (tburrows13) More PEP8 compliance #712 (tburrows13) More PEP8 compliance #711 (tburrows13) βœ… flake8 test to find syntax errors, undefined names #705 (cclauss) fix typo #687 (msrks) ⚑️ Update Readme.rst #671 (rlphillips) ⚑️ Update Dockerfile to add requests module #664 (edouard-mangel) πŸ›  fixed typo in library include #652 (Goddard) Use max fps for CompositeVideoClip #610 (scherroman) Add audio normalization function #609 (dspinellis) #600: Several YouTube examples in Gallery page won't load. #606 (Julian-O) πŸ“š Two small corrections to documentation. #605 (Julian-O) PEP 8 compatible #582 (gpantelis) βœ… add additional ImageSequenceClip test #551 (earney) βœ… General tests cleanup #549 (mbeacom) ⚑️ Update docs #548 (tburrows13) βœ… add tests for most fx functions #545 (earney) Closed issues Overly Restrictive Requirements #767 Using a gif as an ImageClip? #764 How can I include a moving 'arrow' in a clip? #762 How to call ? #760 ImportError: Imageio Pillow requires Pillow, not PIL! #748 Fail to call VideoFileClip() because of WinError 6 #746 concatenate_videoclips with fadein fadeout #743 Ignore - sorry! #739 Image becomes blurr with high fps #735 Https protocol not found with ffmpeg #732 Storing Processed Video clip takes a long time #726 image corruption when concatenating images of different sizes #725 How to install MoviePy on OS High Sierra #706 Issue when running the first example of text overlay in ubuntu 16.04 with python3 #703 Extracting frames #702 🏁 Error - The handle is invalid - Windows Only #697 ImageMagick not detected by moviepy while using SubtitlesClip #693 Textclip is not working at all #691 🚚 Remove Python 3.3 testing ? #688 In idle, 25 % CPU #676 Audio error #675 Insert a ImageClip in a CompositeVideoClip. How to add nil audio #669 Output video is garbled, single frames output are fine #651 'missing handle' error #644 issue with proc being None #636 Looping parameter is missing from write_gif_with_image_io() #629 πŸ“¦ would it be optionally possible to use pgmagick package ? (instead of ImageMagick binary) #625 concatenate_videoclips() can't handle TextClips #622 Writing movie one frame at a time #619 Fatal Python error: PyImport_GetModuleDict: no module dictionary! #618 line 54, in requires_duration return #601 βœ… test_duration() fails in test_TextClip() #598 Geting framesize from moviepy #571 Write_videofile results in 1930x1080 even when I force clip.resize(width=1920,height=1080) before write_videofile #547 AttributeError: AudioFileClip instance has no attribute 'afx' #513 ImageSequenceClip repeats frames depending on fps #464 manual_tracking format issue #373 resize video when time changed trigger a error #334 🏁 WindowsError: [Error 5] Access is denied #294 TypeError in Adding Soundtrack #279 0️⃣ Defaults fail for ImageSequenceClip() #218 audio normalization #32 Unclosed processes. #19