0

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]))

問題なく動作しますが、もう少し微調整する必要があります。このコードに関する入力はありますか?

4

2 に答える 2

0

mp3 フレームは常に独立しているとは限らないため、少し注意する必要があります。これが、ハイエンドの音楽ツールが最初に WAV などに変換される理由の 1 つですが、あなたが指摘したように、特定のフレームまでは機能します。レベル。

次のプロジェクトのコードを見ると、おそらく恩恵を受けることができます (ただし、GPL ライセンスであることに注意してください)。

http://sourceforge.net/projects/pymp3cut/

興味深いビット:

http://pymp3cut.cvs.sourceforge.net/viewvc/pymp3cut/pymp3cut/pmpcmp3.py?revision=1.2&view=markup

実際の音楽部分を抽出したら、大まかなアイデアは、ビットレートに基づいてフレームサイズ、秒、ファイルサイズ、およびバイトコンテンツの間の関係を取得することです。これにより、開始時間と継続時間を取得するためにバイトを分割する場所がわかります。あなたがしたいこと。

于 2013-08-29T16:54:54.030 に答える