【问题标题】:how to read an MP3 file for audio processing in Delphi? [closed]如何在 Delphi 中读取 MP3 文件进行音频处理? [关闭]
【发布时间】:2019-01-27 00:50:27
【问题描述】:

当我想以字节级别处理音频时,我总是将其转换为 .wav 格式,然后进行处理。例如,在我的上一个项目中,我试图为我的音频文件生成一种特殊的波形图像,以便在视频剪辑中使用它。然后我使用在线工具将我的 .mp3 文件转换为 .wav 文件(单声道,8 位,6KHz),然后我以编程方式制作了我的波形图。

现在我希望能够直接对 .mp3 文件进行处理而无需转换,如下面的代码:

aFrom := 60000;   // From 00:01:00.000
aLength := 20000; // 20 Second 
aChannels := 1;   // mono
aBitsPerChannel := 8;
aFreq := 6000;

aBufSize := Open_MP3_As('d:\Until The Last Moment.mp3',
  aBuffer, aFrom, aLength,
  aChannels, aBitsPerChannel, aFreq);

for i := 0 to aBufSize - 1 do
begin
  // Processing aBuffer[i]
end;

这只是展示我的想法的一个例子。如您所见,.mp3 文件的元数据和详细信息对我来说并不重要。

这将非常有用,因为我可以将此功能嵌入到我的音频工具中,让用户更快、更轻松地使用我的工具。我知道这可能是一个非常复杂的代码,因为首先必须将 .mp3 文件转换为 .wav 文件(具有特定的给定参数),然后必须删除标题,将其切片并放入 aBuffer并返回 aBuffer 中的样本数量。

【问题讨论】:

  • 有大量的库/组件可随时用于处理音频/媒体数据。你环顾四周了吗?您尝试过其中任何一个吗?
  • 你知道吗,我可以像我写的代码一样简单地使用它们?或者我必须与一些复杂的(也许不是免费的)组件作斗争,然后我增加了我的项目的大小。
  • 您要做的工作越少,您使用的库就越多。这可能意味着一个较小的项目使用一个更大的库。无论如何,第 3 方的建议都是题外话。
  • 是的,你是对的,但我正在寻找一个真正的答案,有人可以推荐一个免费的图书馆,我可以用它做同样的事情吗?
  • @MohammadAhmadzadeh 去检查一些允许 mp3 播放和搜索功能的音频库。为什么要有搜索功能?因为在大多数情况下,此类库还能够呈现您正在寻找的 waweform 的粗略视觉表示。 Unrotunately 我没有任何免费的经验。但我确实对 BASS 音频库 (un4seen.com) 有一些经验,它具有这样的功能等等。但它不是免费的。

标签: delphi buffer mp3 waveform audio-processing


【解决方案1】:

这可以很快解决我的问题,希望对您有所帮助:

使用This Link 运行此命令行:

ffmpeg.exe -ss 60 -t 20 -y -i input.mp3 -ac 1 -ar 6000 -acodec pcm_u8 output.wav

这将使用给定的参数将 .mp3 文件转换为 .wav。

然后你就有了 .wav 文件,打开它,跳过波头,然后在 aBuffer 中读取它。

就是这样。

【讨论】:

  • 当您在问题中明确表示时,这怎么能成为答案:现在我希望能够直接对 .mp3 文件进行处理而无需转换...?
  • 你是写的,是转换,不是我手动的。在我的正常编程中,我必须使用 Adob​​e Audition 将 mp3 文件转换为 wav 文件才能打开它。但是现在我的应用程序浏览了一个 mp3 文件并在后台自动(并且快速)转换它。好的一点是,在我找到这个解决方案之前,我无法编写一个程序来处理 mp3 文件,但现在我可以编写了一个程序,它不仅可以处理 mp3 文件,还可以处理 ffmpeg 的所有已知文件,如 mkv、mp4、wma、....
猜你喜欢
  • 1970-01-01
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
  • 2017-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多