-
-
Notifications
You must be signed in to change notification settings - Fork 7.9k
Cleanup Animation frame_formats. #19044
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
59ff074
to
fc44d8a
Compare
I'm not sure about the class in Matplotlib, but at least ffmpeg can accept rgba frames (specifying size, etc. via command-line info) https://ffmpeg.org/ffmpeg-formats.html#rawvideo |
I specifically meant the Matplotlib class, when used for reconstituting a movie from on-disk image (rgba) files. If you (or someone else) knows the right invocation to make the example given above work, then that's even better :) |
Yes, I linked to the wrong format, but it should be possible. I just need to test out the other frame formats to be sure I didn't break it. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you revert the raw/rgba removal bits, and then I can add tests into #19056.
fc44d8a
to
73be90b
Compare
Actually, looks like the check for FileMovieWriter when setting the frame format to rgba is still needed for HTMLWriter, which does not support that format... |
Isn't that overwritten in |
73be90b
to
0850ba0
Compare
Ah yes, that's a good idea. |
Unfortunately, seems to have broken docs. |
- Warn if the requested frame format is unsupported and fallback occurs. - ImageMagickFileWriter supports 'rgba' but requires explicit frame_size and depth to do so (they are the same as for ImageMagickWriter, and passing them doesn't negatively impact other formats); it does not support 'raw' (per https://imagemagick.org/script/formats.php) but we can just override it as 'rgba'. Test script: ```python import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation fig, ax = plt.subplots() x = np.arange(0, 2*np.pi, 0.01) line, = ax.plot(x, np.sin(x)) def animate(i): line.set_ydata(np.sin(x + i / 50)) # update the data. return line, ani = animation.FuncAnimation( fig, animate, interval=50, blit=True, save_count=20) plt.rcParams["animation.frame_format"] = "rgba" # or "raw" writer = animation.FFMpegFileWriter() # or animation.ImageMagickFileWriter() ani.save("/tmp/movie.mp4", writer=writer) ``` (Also move import of PIL up, as it's a standard dependency now.)
0850ba0
to
6062833
Compare
hopefully fixed now... |
way to forward the relevant frame size/bitdepth info).
and depth to do so (they are the same as for ImageMagickWriter, and
passing them doesn't negatively impact other formats), but it does not
support 'raw' (per https://imagemagick.org/script/formats.php).
Test script:
(Also move import of PIL up, as it's a standard dependency now.)
PR Summary
PR Checklist
pytest
passes).flake8
on changed files to check).flake8-docstrings
and runflake8 --docstring-convention=all
).doc/users/next_whats_new/
(follow instructions in README.rst there).doc/api/next_api_changes/
(follow instructions in README.rst there).