delphi - 如何在Delphi中播放资源中的mp3内容?

标签 delphi stream mp3 playback

我有一个包含简单 WAV 声音的 TResourceStream

我将该行写入了resource.res文件中: 声音WAV“res\notify.wav”

我有以下适用于 WAV 的方法:

Res := TResourceStream.Create(HInstance, 'sound', 'WAV');
Res.Position := 0;
SndPlaySound(res.Memory, SND_MEMORY or SND_ASYNC);
Res.free;

我将 WAV 转换为 MP3 并执行了以下操作:

resource.res 文件:声音 MP3“res\notify.MP3”

将播放方法第一行更改为:

Res := TResourceStream.Create(HInstance, 'sound', 'MP3');

但是什么也没发生。它不会抛出任何异常,只是听不到声音。

怎样才能像播放WAV文件一样简单地播放MP3?

最佳答案

SndPlaySound API 仅支持波形音频。它不是通用多媒体 API,因此不(直接或轻易)支持 MP3 播放。

要通过此 API 播放音频,您首先需要将 MP3 解码为 API 期望的波形格式。

(我应该注意到,通过将 WAV header 附加到数据,似乎可以让 SndPlaySound API 来播放 MP3 数据。但是需要有关音频的详细信息该 header 和流程绝对是一项不平凡的练习。几乎可以肯定,它比从一开始就使用更适合该任务的 API 更困难。)

对于获取包含 MP3 数据的流,您的方法似乎是正确的,并且内存中的该数据有许多选项可用于播放该 MP3 音频。

BASS Audio Library就是这样的选择之一,尽管这是一个商业图书馆并且不是特别便宜。然而,它完全能够满足您的需求。

但是,有许多替代方案,有些更便宜,有些甚至免费,它们也可以完成工作,但如果它们没有广泛使用或得到很好的支持,您可能会发现很难获得这些帮助。

即便如此,您可能希望查看torry.net 上列出的一些替代方案。目录。具体位于目录的 Components\Effects and Multimedia 部分。

关于delphi - 如何在Delphi中播放资源中的mp3内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36706407/

相关文章:

ios - Delphi DX Seattle FMX 能否在具有 9.1 SDK 的同一个 .IPA 文件中在 IOS 8 和 IOS 9 上运行应用程序

delphi - Delphi IDE 中的快捷方式触发两个操作

javascript - 当流管道用于缓冲时, Node 回显服务器性能下降 10 倍

c - 为什么我的 nanosleep 不起作用...?

java - HTTP:如何正确从 BufferedHttpEntity 读取数据

delphi - 使用 Delphi 显示当前用户的语言(英文)?

delphi - 转换Delphi 7代码以与Delphi 2009一起使用

audio - 使用 FFmpeg 将音频输入与视频混合到特定位置

python - 从在线 mp3 文件中读取元数据

java - 旧曲结束后如何自动开始新曲