【问题标题】:Delphi: BASS.dll - how to copy part of MP3 stream to another fileDelphi:BASS.dll - 如何将部分 MP3 流复制到另一个文件
【发布时间】:2011-12-29 12:02:15
【问题描述】:

我正在使用 BASS.dll 库,我想做的就是将我正在播放的 MP3 的一部分“重定向”到另一个文件(可能是 MP3 或 WAVe)。我不知道如何开始?我试图使用帮助来找到答案,但仍然没有。我可以播放这个流。读取一些我需要的数据。现在我需要复制 ile 例如从 2:00 到 2:10(或按位置)。 有什么想法我应该如何开始?

问候, J.K.

【问题讨论】:

  • 1) 寻找正确的位置。 2) 将数据复制到缓冲区中。 3) 创建一个输出文件。 4) 将缓冲区复制到输出文件中。您遇到了哪些问题?
  • 我不想硬拷贝文件的一部分。我想将 MP3 的一部分复制到另一个 MP3 中。例如,我不能只复制 X 个字节。

标签: delphi mp3 bass bass.dll


【解决方案1】:

嗯,我不具体了解 BASS,但我对音乐播放和一般压缩数据格式知之甚少,正确复制数据涉及中间解码步骤。以下是您需要做的:

  1. 打开文件并找到正确的位置。
  2. 将音频解码到内存缓冲区中。缓冲区的大小应为(LengthInSeconds * SamplesPerSecond * Channels * BytesPerSample) 字节。因此,如果是 10 秒的 CD 质量音频,则为 10 * 44100 * 2(立体声)* 2(16 位音频)= 1764000 字节。
  3. 获取此解码数据缓冲区并将其输入 MP3 编码函数,并将生成的 MP3 保存到文件中。

如果 BASS 具有解码到外部缓冲区和将缓冲区编码为 MP3 的功能,那很好;您所要做的就是弄清楚要使用哪些。如果没有,您将不得不寻找另一个用于 MP3 编码和解码的库。

另外,请注意generational loss。 MP3 使用有损压缩,所以如果你多次解压和重新压缩数据,会损害音质。

【讨论】:

  • 这很好,谢谢。我会尝试它,我也会尝试为此找到另一个库。我会告诉你 - 如果它有效我会接受这个答案。
猜你喜欢
  • 1970-01-01
  • 2018-08-08
  • 2011-11-05
  • 2017-07-23
  • 1970-01-01
  • 2010-09-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多