问题标签 [pydub]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - PIL/Pillow 看似随意地反转透明度
我安装了 Pillow 2.4.0(在 OS X 和 Ubuntu 14.04 EC2 上的虚拟环境中)。我编写了以下脚本来生成波形的可视化(从 Jiaaro 获得一些灵感)。它使用 Pydub 库分析波形和 PIL/Pillow 的 ImageDraw 函数来绘制线条。wav 变量是一个 audiosegment() (来自 Pydub 库), imgname 是一个字符串:
大多数时候,一切都很时髦。在某些波形上,尤其是最接近峰值的波形,PIL 将输出一个具有翻转透明度的 GIF - 波形将是透明的,而它周围的空间将是白色的。通常背景是透明的,波形是黑色的(#000000)。
这是预期输出的图片:
并且不正确(右键另存为并在图像编辑器中打开,因为它的背景是白色的,中间是透明的):
有没有人遇到过类似的问题?我是否遗漏了一些明显的东西(可能)?
python - 用于音频混合拆分的 Python 模块
我已经搜索了很长时间,但没有找到任何真正有效的方法。
这个想法是我有一个音乐混合(主要是 .mp3),我正在尝试使用 pyechonest 来制作曲目列表来识别曲目。但是,这只会识别单个轨道(如果我错了,请纠正我),所以我想有另一个模块可以将混音分成单独的轨道。
我查看了 pydub 以进行音频拆分,但仍然存在检测问题。
提前致谢。
编辑:所以,我找到了一种剪切文件的方法,但现在 pyechonest 正在返回播客的名称而不是它自己的曲目名称,我的代码(例如 5 个部分):
显然不是我想要的......有什么方法可以强制 echonest 不查看播客,或者返回多种可能性或类似的东西?
python - 在 PyDub 中导出(但不保存到)音频文件?
对我来说,PyDub 库非常适合转换音频格式。我最近用它编写了一个命令行音频转换器来转换大约 200 个音频文件,它让我不必购买或寻找一个音频转换器,让我可以将歌曲和其他音频文件排队等待转换。但我很快注意到它取代了我的音频文件。现在,对我来说,这是理想的。这太棒了。但是,如果我不想让PyDub 替换音频文件,而是以不同的格式复制它,该怎么办?我可以将文件复制到目录中并转换它们,但是在 PyDub 中没有办法做到这一点吗?我调查了它,但我找不到这样做的方法,也找不到关于此的问题,所以也许这不是一件很常见的事情。
谢谢!
python - raise_child 异常输出
我试图让 pydub 将 2 个音频 wav 文件混合成一个 wav 文件。这是我当前的代码:
这是确切的错误日志:
但是,无论出于何种原因,每当我尝试运行它时,它都会引发 raise_child 异常,并告诉我没有这样的文件或目录,指的是我告诉它导出的最后一行。我不知道为什么。谁能告诉我为什么会这样?
python - 如何使用 pydub 提取专辑封面
我想使用Pydub从歌曲中提取专辑封面并在转换后将其嵌入回歌曲中。有人可以帮助我吗?
python - Pydub在目录中连接mp3
我想将所有 .mp3 与 pydub 连接到一个目录中。文件依次编号为 file0.mp3、file1.mp3 等。
此代码来自示例代码:
给我所有文件,现在我想连接,就像伪代码一样:
有没有办法实现这一点,还是我接近它错了?
谢谢您的帮助 !
python - 在 pydub 中播放音频
将 wav 音频导入我的代码后,如何播放它?
heroku - 从 url 读取 pydub AudioSegment。BytesIO 仅在 heroku 上返回“OSError [Errno 2] No such file or directory”;在本地主机上很好
编辑 1 对于任何有相同错误的人:安装 ffmpeg 确实解决了 BytesIO 错误
为仍然愿意提供帮助的任何人编辑 1:我现在的问题是,当我使用 AudioSegment.export("filename.mp3", format="mp3") 时,文件已制作,但大小为 0 字节——详情如下(如“编辑 1")
编辑2:现在所有问题都解决了。
- 可以使用 BytesIO 将文件作为 AudioSegment 读入
- 我找到了 buildpacks 以确保 ffmpeg 在我的应用程序上正确安装,并支持导出正确的 mp3 文件
下面回答
原始问题
我让 pydub 在本地工作得很好,可以根据 url 中的参数裁剪特定的 mp3 文件。(?start_time=3.8&end_time=5.1)
当我运行foreman start
它时,它在 localhost 上看起来一切都很好。html 渲染得很好。views.py 中的关键行包括使用从 url 读取文件
这一切都很好......直到我推送到heroku(django应用程序)并在线运行它。然后当我现在在 herokuapp.com 上加载相同的页面时,我收到了这个错误
我已经注释掉了一些原文,以说服自己,单行original=AudioSegment.from_mp3(BytesIO(mp3))
是问题的根源……但这在本地不是问题
views.py 中的完整功能如下所示:
特别是在我访问页面时调用的views.py中的视图:
有什么建议么?
潜在相关:我在本地安装了 ffmpeg
但由于不了解构建包,无法将其安装到 heroku 上。我刚刚尝试过(http://stackoverflow.com/questions/14407388/how-to-install-ffmpeg-for-a-django-app-on-heroku
和https://github.com/shunjikonishi/heroku-buildpack-ffmpeg
),但到目前为止 ffmpeg 无法在 heroku 上运行(当我执行“heroku run ffmpeg --version”时,ffmpeg 无法识别)......你认为这是原因吗?
当我在这里转圈圈时,将不胜感激任何这样的答案:
- “我认为 ffmpeg 确实是你的问题。努力解决这个问题,把它安装在 heroku 上”
- “实际上,我认为这就是 BytesIO 不适合你的原因:......”
- “无论如何,你的方法很糟糕......如果你想读入音频文件以使用 pydub 进行处理,你应该这样做:......”(因为我只是第一次通过 pydub 破解。 ..我的方法可能很差)
编辑 1
ffmpeg 现已安装(例如,我可以输出 wav 文件)
但是,我无法创建 mp3 文件,仍然......或者更准确地说,我可以,但文件大小为零
请注意上面 0 的文件大小为 mp3 文件...当我在我的 macbook 上做同样的事情时,文件大小永远不会为零
回到heroku shell:
我第一次意识到我忘记了pydub.AudioSegment.ffmpeg = "/app/vendor/ffmpeg/bin/ffmpeg"
命令,但是正如你在上面看到的,文件仍然是零大小
出于绝望,我什至尝试将“.heroku”添加到路径中,以便与您的示例一样逐字记录,但这并没有解决它:
最后,我尝试导出一个 .wav 文件来检查 pydub 至少工作正常
至少 .wav 的文件大小不为零,因此 pydub 正在工作
我目前的理论是,要么我仍然没有正确使用 ffmpeg,要么还不够……也许我需要在基本 ffmpeg 之上额外安装一个 mp3。
几个网站提到“libavcodec-extra-53”,但我不知道如何在heroku上安装它,或者检查我是否有它?https://github.com/jiaaro/pydub/issues/36
同样,关于 libmp3lame 的教程似乎是针对笔记本电脑安装而不是在 heroku 上安装的,所以我很茫然http://superuser.com/questions/196857/how-to-install-libmp3lame-for-ffmpeg
如果相关,我的 requirements.txt 中也有 youtube-dl ...这也适用于我的 macbook 本地,但是当我在 heroku shell 中运行它时失败:
信息链接是它太具体说明了 mp3 故障,所以也许这两个问题是相关的。
编辑 2
看答案,所有问题都解决了
python - 如何从 python 中的音频/视频文件中提取元数据和比特率信息
我想做的是从音频或视频文件中获取元数据并将其保存到数据库记录中,到目前为止,这样做的唯一方法似乎是使用子进程将 AVCONV 保存到文件中。打开调用然后读取该文件,是有没有图书馆可以做到这一点来节省一些步骤?我找不到使用 Pydub 或 PySox 的方法。这是我使用的简单粗暴的初学者代码,它确实有效,并将比特率、持续时间等信息放入变量 audio_info 并将元数据放入元数据。OGG 输出的工作方式与我测试的其他格式不同(这是大量的视频和音频!)。
python - 重新创建 Web 音频 API GainNode 行为
我正在覆盖一堆音频片段,并希望能够以 (1, 1, 1, 0.5, 0...) 的形式将一组值传递给我的函数,每个数字都是音量的比率一个段应该被缩放到。0 应该是绝对无声的,而 1 应该是未修改的原始音量,而 0.5 正好是一半。据我了解,这是GainNode “增益”属性的行为。
到目前为止,我尝试了这些:
和
不幸的是,两者都不能完美地工作,这意味着它们不能完全复制浏览器(Mozilla Firefox)的行为。使用第一个,即使我传入一个仅包含 0 的元组,也可以使用我的音频播放器(foobar2000)听到声音,而第二个设法使用正确的静音阈值使整个片段静音,例如使用 0.3 创建音频水平远低于我在浏览器中使用相同值可以观察到的水平。
需要注意的是,我的音频技术知识非常有限。这些仅仅是由不同的音频设备、音频实现细节等造成的技术误差吗?如果是这样的话,有人可以建议我做这个缩放的最“正确”的方法吗?