-
Notifications
You must be signed in to change notification settings - Fork 1.8k
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
Remove pydub
from dependencies
#3968
Comments
Pinging @behackl as we talked about this on stream a while back. |
I read some source code of pydub and find this: try:
import audioop
except ImportError:
import pyaudioop as audioop It seems like, inside of Original audioop code is in this package: https://github.com/AbstractUmbra/audioop |
Unfortunately, pydubs alternate python implementation is actually broken, as I found out in #3967 |
Yeah, it is totally broken. If you resolve the import issue, then the code is just filled with type errors and mentioned function really was not there. Never tested hasty conversion of C-code. |
If dependency to external ffmpeg executable is dropped, this will be broken in that regard too. |
The cases where pydub would call ffmpeg via the executable should be taken care of by manual transcoding on our end. Did you find some situation where pyav actually tries to invoke ffmpeg on the current main branch? |
I was pondering solution space and then remembered transition to Pyav. So solution space did shrink to that singular interface structures. (Personally I don't know nothing about pyav interfaces.) I was just refering subprocess calls to ffmpeg/libav inside of pydub-packet. As far I understand, those would fail when new user does not have external ffmpeg/libav executable and only PyAv-library? And every other solutions that does not use pyav interfaces. |
pydub
is no longer actively maintained, and is now running into issues withaudioop
being removed in python 3.13. As such, we should try to remove it from our dependencies and implement the needed features ourselves.From a quick look through the code, the main features needed to implement are:
AudioSegment.silent
AudioSegment.overlay
AudioSegment.from_file
manim/manim/scene/scene_file_writer.py
Lines 330 to 334 in ce1fff6
manim/manim/scene/scene_file_writer.py
Line 327 in ce1fff6
manim/manim/scene/scene_file_writer.py
Line 370 in ce1fff6
The text was updated successfully, but these errors were encountered: