使用Python快速转码mp3成ogg的方法(实时)?

2024-05-23 13:30:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一个库/模块,可以转换一个MP3(其他格式是一个加号)到OGG,动态。在

我需要的是:我正在编写一个相对较小的网络应用程序,供个人使用,允许人们通过浏览器收听他们的音乐。在听力部分,我打算使用新的强大的<audio>标记。然而,很少有浏览器支持MP3。现场转码似乎是最好的选择,因为它不会浪费磁盘空间(就像我要转换整个音乐库),而且我不会有性能问题,因为最多同时有2-3个听众。在

基本上,我需要向它提供一个MP3(或其他任何东西),然后获得一个类似于文件的对象,我可以将它传递回我的框架(flask)以提供给客户机。在

我看过的东西:

  • gstreamer——虽然对很多格式有很好的支持,但似乎有点过头了;文档非常缺乏
  • ^{}——看起来很好,使用起来也很简单,但它还有很多我不需要的东西(绘图、分析、UI…)
  • PyMedia——上次更新时间:2006年2月1日。。。在

建议?在


Tags: 模块标记程序音乐格式浏览器动态网络应用
1条回答
网友
1楼 · 发布于 2024-05-23 13:30:51

要知道,使用subprocess调用外部实用程序并没有什么丢脸的。例如,可以构造管道,例如:

#!/usr/bin/env python
import subprocess
frommp3 = subprocess.Popen(['mpg123', '-w', '-', '/tmp/test.mp3'], stdout=subprocess.PIPE)
toogg = subprocess.Popen(['oggenc', '-'], stdin=frommp3.stdout, stdout=subprocess.PIPE)
with open('/tmp/test.ogg', 'wb') as outfile:
    while True:
        data = toogg.stdout.read(1024 * 100)
        if not data:
            break
        outfile.write(data)

事实上,这可能是你最好的方法。考虑到在一个多CPU系统上,MP3解码器和OGG编码器将在不同的进程中运行,并且可能在不同的内核上进行调度。如果你能像单线程库一样快速地处理单线程库。在

相关问题 更多 >