【问题标题】:How to split an audio file in ActionScript如何在 ActionScript 中拆分音频文件
【发布时间】:2014-12-21 18:10:07
【问题描述】:

我想将一个 mp3 文件分成几部分,例如ActionScript 中从 0:30 到 0:45 和从 0:45 到 1:00。

我找到的最接近的是this short snippet from documentation。我找不到任何可以帮助我的文章或图书馆。有没有可能实现?

提前感谢您的任何提示。

我想要的示例:mp3cut

【问题讨论】:

    标签: actionscript-3 flash audio actionscript mp3


    【解决方案1】:

    我自己没有这样做,但我会按照这个过程进行:

    1. 加载 MP3 文件
    2. 解码 MP3 文件
    3. 提取您需要的位
    4. 对提取的数据进行编码

    以下所有内容均被视为未经测试的伪代码。

    第 1 步:加载 MP3 文件

    我假设您已经有办法将压缩的 MP3 文件加载到内存中。如果没有,可以找到有关此步骤的大量信息。

    第 2 步:解码 MP3 文件

    Sound 类公开了 loadCompressedDataFromByteArray (docs) 方法,该方法将压缩的 MP3 文件作为 ByteArray 并将其解码为原始声音数据。

    例子:

    var mySound:Sound = new Sound();
    mySound.loadCompressedDataFromByteArray(myMP3Data, myMP3Data.length);
    

    第 3 步:提取一部分声音

    使用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);
    

    第 4 步:将提取的声音编码回 MP3

    现在您已将声音数据作为 ByteArray,有几种方法可以将其编码回 MP3 格式。 This previous StackOverflow answer 提到了 this library,但可能还有其他库更适合您的任务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-27
      • 1970-01-01
      • 1970-01-01
      • 2016-07-27
      • 2019-11-26
      • 1970-01-01
      • 2021-03-13
      相关资源
      最近更新 更多