python铃声生成器:如何分割文件

python铃声生成器:如何分割文件,python,mp3,ringtone,Python,Mp3,Ringtone,我正在写一个为iPhone制作铃声的应用程序。只是为了好玩。 这是我到现在为止所做的。(请注意,我是Python的初学者!) 所以我以二进制模式打开我的mp3文件。阅读整个文件。将其转换为列表。使用列表切片来分割文件。将此新拆分保存到新的mp3文件中。这个很好用。但是,我希望铃声的播放时间最多为30秒,并且我希望用户选择他想要的文件部分作为铃声。有人能给我指引正确的方向吗?谢谢 这是我到目前为止的代码: f = open("Bruno Mars - Locked Out Of Heaven [O

我正在写一个为iPhone制作铃声的应用程序。只是为了好玩。 这是我到现在为止所做的。(请注意,我是Python的初学者!) 所以我以二进制模式打开我的mp3文件。阅读整个文件。将其转换为列表。使用列表切片来分割文件。将此新拆分保存到新的mp3文件中。这个很好用。但是,我希望铃声的播放时间最多为30秒,并且我希望用户选择他想要的文件部分作为铃声。有人能给我指引正确的方向吗?谢谢

这是我到目前为止的代码:

f = open("Bruno Mars - Locked Out Of Heaven [OFFICIAL VIDEO].mp3", 'rb').read()
mp3 = list(f)
fo = open("newFile.mp3", "wb")
print(mp3[0:1300000]) 
fo.write(bytes(mp3[0:1300000]))
以下是我经过编码后得到的结果:

import os
f = open("Bruno Mars - Locked Out Of Heaven [OFFICIAL VIDEO].mp3", 'rb').read()
fileSize = os.path.getsize("Bruno Mars - Locked Out Of Heaven [OFFICIAL VIDEO].mp3")
print("Size of the whole file",fileSize)
mp3 = list(f)
bitRate = int(input("Enter the bit rate of your file"))
size_mbps = bitRate*(15/2048)
print("MB per minute :",size_mbps)
second_size = int((size_mbps/60)*(10**6))
print("Size of each second :",second_size)
start_length = int(input("Enter the start time (in seconds)"))
end_length = int(input("Enter the end time (in seconds)"))
start_size = int(second_size*start_length)
end_size = int(second_size*end_length)
fo = open("newFile.mp3", "wb")
fo.write(bytes(mp3[start_size:end_size]))

它的工作原理很好,但我需要调整它多一点。这段代码有什么输入吗?

你必须小心一点,因为mp3帧并不总是独立存在的,这也是高端音乐工具首先会转换为WAV或类似格式的原因之一,但正如你所说的,它确实可以工作到某个级别

您可能会从以下项目中的代码中获益(请注意,它是GPL许可的):

有趣的是:


一旦提取出实际的音乐部分,大致的想法是根据比特率来获得帧大小、秒数、文件大小和字节内容之间的关系,然后,它会告诉您从何处分割字节以获得所需的开始时间和持续时间。

如果您想使用更高级的语言,如
c++
来实现自定义MP3解码器,请查看此问题

否则,还有其他库可以满足您的需要:

-

-

-


还有很多,但现在你可以从这些开始。

我们需要更多信息。你在用什么图书馆?(或者已经编写了一个自定义的库(可能是c,c++)?另外,如果您发布一些相关的代码会更好。@enginefree我没有使用任何库。我可以实现任何库吗?size\u mbps=bitRate*(15/2048)
@Shonu93唯一的建议是,我必须将所有数据添加到一个字典中。如果你要迭代许多歌曲,你可能需要一个更有序的结构。
import mad

mf = mad.MadFile("foo.mp3")
track_length_in_milliseconds = mf.total_time()
audio = audioread.audio_open('/path/to/mp3')
print f.channels, f.samplerate, f.duration
from mutagen.mp3 import MP3
audio = MP3("example.mp3")
print audio.info.length