Moviepy Versions Save

Video editing with Python

v2.0.0.dev2

3 years ago

v2.0.0.dev2

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 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_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

3 years ago

v2.0.0.dev1 (2020-06-04)

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]
  • 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 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

  • 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

  • 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() 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

  • 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]
  • TextClip.search("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

4 years ago

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

4 years ago

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:

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
  • 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

v1.0.1

4 years ago

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:

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='learn.srt') --bug:TypeError: stat: path should be string, bytes, os.PathLike or integer, not NoneType #984
  • txt_clip = TextClip(filename='learn.srt') --bug:TypeError: stat: path should be string, bytes, os.PathLike or integer, not NoneType #983
  • txt_clip = TextClip(filename='learn.srt')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 moviepy.video.fx.all #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 https://zulko.github.io/moviepy/install.html #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 config_defaults.py #378
  • AttributeError: 'NoneType' object has no attribute 'start' #191
  • ImageMagick write gif success but no file found #113

v1.0.0

4 years ago

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

Closed issues

  • Can't overlay gizeh animation onto video with transparency/mask #898
  • [0.2.4.0] 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

5 years ago

v0.2.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:

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

6 years ago

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:

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.2

6 years ago

New

  • #300 progress_bar parameter added to write_images_sequence
  • #529 VideoFileClip objects now have a rotation attribute

Bug Fixes

  • #336 ValueError: operands could not be broadcast together with shapes bug fixed (#334)

Docs

Full details

Merged pull requests

Closed issues

  • Requirements adjustments #530

  • Documentation build failures #525

  • Index is out of bounds - AudioFileClip #521

  • Youtube videos fail to load in documentation #536

  • unicodeDecoderError by running the setup.py during moviepy pip install #532

  • Should we push another version? #481

  • Add matplotlib example to the user guide? #421

  • Fails to list fx after freezing an app with moviepy #274

  • Documentation doesn't match ffmpeg presets #232

  • Minor Modifications #515 (gpantelis)

v0.2.3.3

6 years ago

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 advanced_tools.py 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)
  • Avoid mutable default arguments #553 (mbeacom)
  • add ImageSequenceClip image size exception #550 (earney)

Merged pull requests:

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 moviepy.video.fx.all.crop() ? #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
  • Defaults fail for ImageSequenceClip() #218
  • audio normalization #32
  • Unclosed processes. #19