Releases: Zulko/moviepy
v2.1.1
What's Changed
- Make
FFMPEG_VideoReader
more 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_read
is 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
pos
andlastread
; 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_fmt
parameter inVideoFileClip
,VideoClip.write_videofile()
,VideoClip.write_gif()
that allows passing a custompix_fmt
parameter such as"bgr24"
to FFmpeg [#1237] - New
change_duration
parameter inClip.set_fps()
that allows changing the video speed to match the new fps [#1329]
Changed
ffmpeg_parse_infos()
andVideoFileClip
now have optionaldecode_file
parameter that ensures that the detected duration is correct, but may take a long time to run [#1063, #1222]ffmpeg_parse_infos()
andVideoFileClip
now usefps
metadata instead oftbr
to 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_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
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]
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_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:
- 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
v1.0.1
v1.0.1 (2019-10-01)
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='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
v1.0.0 (2019-02-17)
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
- [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
v0.2.3.5 (2018-05-31)
New features
- Progress bar optional for GIF creation #799 (mdfirman)
- Added contributing guide and issue template #792 (tburrows13)
Full details
Merged pull requests
Fixed bugs:
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