我想将一个mp3文件分成几个部分,例如在ActionScript中从0:30到0:45以及从0:45到1:00。
我发现最接近的是this short snippet from documentation。我找不到任何可以帮助我的文章或图书馆。甚至可以实现吗?
提前感谢任何提示。
我想要的例子:mp3cut
答案 0 :(得分:2)
我自己没有这样做过,但是按照这个过程我会采取的方式:
以下所有内容都被视为未经测试的伪代码。
我假设您已经有办法将压缩的MP3文件加载到内存中。如果没有,可以找到有关此步骤的大量信息。
Sound
类公开方法loadCompressedDataFromByteArray
(docs),它将压缩的MP3文件作为ByteArray
并将其解码为原始声音数据。
示例:
var mySound:Sound = new Sound();
mySound.loadCompressedDataFromByteArray(myMP3Data, myMP3Data.length);
使用extract
(docs)方法(如问题中的链接所述),您可以从Sound
对象中提取原始声音数据。您传入一个ByteArray
对象以填充数据,指定您希望“剪切”的位置,以及要提取的剪辑的长度。
使用每秒44100个样本(左+右声道)存储数据,下面的计算基于此。我可能错了,所以如果它没有按预期工作,请进一步查看。
示例:
var sampleFrequency:int = 44100;
var startTimeInSeconds:Number = 30.0;
var lengthInSeconds:Number = 15.0;
// Calculate the position to start the clip (in samples)
var startPosition:Number = Math.round(startTimeInSeconds * sampleFrequency);
// Calculate the number of samples to extract
var samplesLength:Number = Math.round(lengthInSeconds * sampleFrequency);
var extractedBytes:ByteArray = new ByteArray();
mySound.extract(extractedBytes, samplesLength, startPosition);
既然您将声音数据作为ByteArray,那么可以通过几种方式将其编码为MP3格式。 This previous StackOverflow answer提及this library,但可能还有其他图书馆更适合您的任务。