首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从 Linux 上运行的 Free Pascal 应用程序播放 wav 文件?

要从 Linux 上运行的 Free Pascal 应用程序播放 wav 文件,您可以使用 SDL 库。以下是一个简单的示例代码:

代码语言:pascal
复制
program PlayWav;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SDL2, SDL2_mixer;

var
  audioSpec: TSDL_AudioSpec;
  audioBuf: PUInt8;
  audioLen: UInt32;

  // 加载 wav 文件并返回音频缓冲区
  function LoadWav(const filename: string; out audioBuf: PUInt8; out audioLen: UInt32): TSDL_AudioSpec;
  var
    wavSpec: TSDL_AudioSpec;
    wavBuf: PUInt8;
  begin
    if SDL_LoadWAV(PChar(filename), wavSpec, wavBuf, audioLen) = nil then
      raise Exception.Create('无法加载 wav 文件');

    audioBuf := wavBuf;
    Result := wavSpec;
  end;

begin
  if SDL_Init(SDL_INIT_AUDIO) <> 0 then
    raise Exception.Create('无法初始化 SDL');

  try
    audioSpec := LoadWav('example.wav', audioBuf, audioLen);

    if Mix_OpenAudio(audioSpec.freq, audioSpec.format, audioSpec.channels, audioSpec.samples) <> 0 then
      raise Exception.Create('无法打开音频设备');

    try
      if Mix_PlayChannel(0, PMix_Chunk(audioBuf), 0) = -1 then
        raise Exception.Create('无法播放 wav 文件');

      while Mix_Playing(0) = 1 do
        SDL_Delay(100);

    finally
      Mix_CloseAudio();
    end;

  finally
    SDL_Quit();
  end;
end.

这个示例代码使用 SDL 库加载 wav 文件,并使用 SDL_mixer 库播放音频。在运行此代码之前,请确保您已经安装了 SDL 和 SDL_mixer 库。

请注意,这个示例代码仅适用于 Linux 平台。如果您需要在其他平台上运行 Free Pascal 应用程序,您可能需要使用其他音频库。

相关搜索:如何从内存中包含.wav文件的How文件中播放HTML页面上的音频文件?如何从我的Windows机器上运行安装在linux机器上的OpenGL应用程序?如何从远程机器上的jar文件运行测试?如何在linux上运行打包的电子应用程序?如何在Apple Watch上从xcode运行我的应用程序?如何从运行在NodeJS上的ClojureScript中读取EDN文件?如何从OSX上的文件中调试应用程序的打开?无法在运行ios 13的设备上播放音频文件而不导致应用程序崩溃如何从iOS上的另一个应用程序打开谷歌播放音乐应用程序?如何从运行在.NET上的Linux应用程序对Windows域用户进行身份验证如何从.bat文件在heroku上的远程postgres数据库上运行代码如何从Linux shell运行一个简单的类文件?如何区分运行在Android和传统Linux上的ELF文件?如何使用HTTP请求方法将CSV文件从angular应用程序传递到服务器上运行的节点应用程序为什么我的linux ffmpeg输出文件需要通过ffmpeg重新运行它才能在windows上播放?可以从linux上运行的nodejs应用程序使用windows auth模式连接到mssql吗?如何从运行于Linux上的c# .net内核(docker容器)在远程windows网络路径上运行.exe如何从linux上的asp.net核心应用程序中迁移表WSL:如何从WSL上linux系统的命令行运行windows上的浏览器有没有办法从c#控制台应用程序运行linux文件服务器上的shell脚本?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

USF MSDS501 计算数据科学中

在 Linux 上它会像: /home/YOURID/msan501/labs/sound 安装命令行工具 事实证明,我们将在 Python 中使用的声音库,不知道如何处理 mp3 文件。...我们需要将ahhh.mp3文件转换为ahhh.wav,这些库知道如何处理它。 为此,我们将使用名为 mpg123 的工具。...看一下当前目录中的文件,看看是否出现了ahhh.wav: $ ls Kiss.aiff ahhh.mp3 ahhh.wav 如果您无法弄清楚如何转换为ahhh.wav,请不要担心。...现在是时候把所有这些放在一个简单的 Python 程序中,你可以剪切和粘贴来播放声音。 让我们从代码开始播放Kiss.aiff文件。 在音频文件的同一目录中创建一个名为play.py的文件。...再次执行程序,您应该听到播放其他声音文件。 最常见的错误是声音文件没有与代码位于同一目录中。 生成我们自己的声音 在声音章节中,我们看到了如何产生正弦波,当我们将它扔给扬声器时,正弦波会产生纯音。

1.3K20

用ARM实现音乐电子相册

2、交叉编译环境 2.1、交叉编译 交叉编译(cross-compilation)是指在某个主机平台上(比如PC上)用交叉编译器编译出可在其他平台上(比如ARM上)运行的代码的过程。...直接从文件读取到屏幕显示bmp文件。这种方法将通过显存显示bmp文件所需要的内存空间、读取数据到申请的空间、显示等多步任务简化成一步。事实上也就是将读取文件数据到申请内存变到显示内存。...(4)对应用程序E_Album.c的编译、加载: 在虚拟机上交叉编译: arm-linux-gcc -o E_Album E_Album.c //交叉编译应用程序 在开发板上执行应用程序: ....."); //从wav文件中读wav_length大小的内容,然后写入/dev/dsp中 fseek(wav_fd, 0x2cL, SEEK_SET);...Linux和开发板上进行应用程序的交叉编译,对硬件的操作和对软件的使用也有所掌握。

2K20
  • Java如何调用本地扬声器

    一个应用程序可使用权多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件)。...,这个方法既可以发声还能输出后缀为.wav的文件,这是一个标准的多媒体文件。...本来所有的基础都是在本地运行的,通过调用本地dll文件实现扬声器发声,现在部署到centOS上将会失去这个dll的支持,目前所存在的问题是如何不使用dll文件实现这个功能,中间借助了.wav后缀的音视频文件...如何在Linux上生成.wav的文件。 如何获取这个文件并输出。...(解释一下,用餐顾客点击手机网页的菜单,然后再餐厅的主机来播放这个声音) 如何在输出主机不进行任何操作就能播放这个声音或者能够恢复之前的工作状态。

    1K30

    【技术干货】原来ARM+Linux音频方案如此简单!

    嵌入式产品开发中经常遇到音频的输入输出问题,如何为其添加“喇叭”、“麦克风”设备呢?本文将简单介绍ARM+Linux产品中的音频解决方案。 ...ALSA是linux的主流音频体系结构,它包含内核驱动集合, API 库和工具对 Linux 声音进行支持,应用程序只要调用alsa-lib提供的API,即可以完成对底层音频硬件的控制。  ...在开发板下,运行aplay程序可以对音频播放进行测试。在测试前,需要将耳机插入开发板的耳机插孔中。...为测试基于I2S的音频输出接口,在命令行下执行如下命令:  其中2.wav为需要播放的音频文件,且此处假定2.wav位于/home/root/audios目录下。...由上可知,音频编解码芯片在Linux系统中以控件的形式存在,内部的参数一般只记录在内存中,当系统掉电时,修改的参数就会消失,所以需要保存和恢复指令将上次的参数保存在配置文件中。

    2.2K20

    基于PaddlePaddle实现的DeepSpeech2端到端中文语音识模型

    noise.py 注意: 以上代码只支持在Linux下执行,如果是Windows的话,可以获取程序中的DATA_URL单独下载,建议用迅雷等下载工具,这样下载速度快很多。...语音文件需要放在PaddlePaddle-DeepSpeech/dataset/audio/目录下,例如我们有个wav的文件夹,里面都是语音文件,我们就把这个文件存放在PaddlePaddle-DeepSpeech.../models/infer/ 本地预测 我们可以使用这个脚本使用模型进行预测,如果如何还没导出模型,需要执行导出模型操作把模型参数导出为预测模型,通过传递音频文件的路径进行识别,通过参数--wav_path...启动服务之后,如果在本地运行的话,在浏览器上访问http://localhost:5000,否则修改为对应的 IP地址。...打开页面之后可以选择上传长音或者短语音音频文件,也可以在页面上直接录音,录音完成之后点击上传,播放功能只支持录音的音频。

    2.8K10

    一个免费的、跨平台的、开源音频编辑器Audacity

    Audacity 是一个免费的开源程序,用于编辑音频录制。它可在多个平台(windows/linux)上运行。Audacity 基于 GUI,是一个具有多种选项的强大程序。它支持您录制各种类型的声音。...下面是一些常用的功能: MP3 录制 如果您想要完全控制音频文件,MP3 格式(Audacity 可以存储文件的格式)为您提供了良好的控制,您可以选择在哪种设备上播放音乐,以及是否想在 iPod 上播放...由于铃声有多种格式,因此请参考您的手机手册,查看需要哪种格式。大多数手机使用 MP3 或 WAV 文件格式,Audacity 也支持这两种格式。...例如,如果您在制作了一段非常重要的话之后想添加 BANG.WAV。单击 FILE-IMPORT,然后找到 BANG.WAV 文件并导入它即可。BANG.WAV 将有自己的音轨。可以滑动到想要的位置。...您可以通过声卡将它们连接到计算机,然后单击 Audacity 界面的 RECORD,并开始播放您想要录制的歌曲。此功能也适用于磁带录制。如果您不确定如何做,许多好的网站都提供了相关帮助。

    1.6K50

    移植speexdsp到OpenHarmony标准系统⑤

    七、Speexdsp功能分析将speexdsp加入openharmony编译体系后,能成功编译出来动态链接库和测试用的可执行文件,并不代表移植三方库成功。还要在开发板上运行测试其功能是否正常。...进行功能测试需要对比pc端和开发板的运行效果,因此需要在pc端编译出测试用的可执行文件(开发板上的已经编译出来了)。...2.测试源文件testjitter.c,这个去抖动测试需要接收来自udp/rtp的网络语音数据,原生测试程序没有做到真正意义上的测试,从程序上看是告诉用户如何使用接口。...如果有这样的编译报错,说明依赖的库没在linux上安装完整。安转完整才能成功编译。...⑤执行testjitter可执行文件通过分析testjitter.c源码,测试需要接收来自udp/rtp的网络语音数据,原生测试程序没有做到真正意义上的测试,从程序上看是告诉用户如何使用接口。

    17920

    SDL简介

    SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。...目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。...SDL在结构上是将不同操作系统的库再封装成相同的函数,例如SDL在Windows平台上是DirectX的封装,而在使用X11的平台上(包括Linux),SDL则是与Xlib库沟通来输出图像。...Timers,用于定时器的支持。 File Abstraction,文件系统相关操作。 Shared Object Support,用于动态库的加载以及函数查找等相关操作。...SDL_mixer 用于支持额外的音频格式,包括 MP3、OGG、WAV 等。 SDL_ttf 用于 TrueType 字体的渲染。 SDL_rtf 用于简单的 RTF 渲染支持。

    2.4K30

    Linux下使用ffmpeg播放mp3aacwav文件的音乐播放器应用

    是不是没什么新意,不过一直使用ffmpeg程序,还没有用ffmpeg代码接口实现播放器,并且还需要使用linux的alsa接口播放出声音,所以做出来还是觉得有点意思; ---- 需求:实现一个嵌入式linux...上支持mp3/aac/wav文件的播放器 实现:所以考虑基于ffmpeg 实现一个嵌入式linux的播放器,这里主要应用ffmpeg的协议处理和音频解码能力,虽然网上的代码很多,不过由于版本的差异,例子程序接口存在差异...关键函数:av_packet_unref(&input_packet); ---alsa播放设备如何枚举?...-enable-decoder=ac3 1、cpp文件引用ffmpeg库,出现链接错误,需要在包括头文件的地方增加两个前缀: //.cpp #include  #ifdef.../Test1.wav 0 4、使用alsa接口,完整播放出mp3文件声音的代码; //static const char *device = "hw:1,0"; /* playback device

    3.5K30

    飞桨开发者又出新工具!让AI也能听懂你的话

    noise.py 注意:以上代码只支持在Linux下执行,如果是Windows的话,可以获取程序中的DATA_URL单独下载,建议用迅雷等下载工具。...然后把download()函数改为文件的绝对路径,如下。我把aishell.py的文件单独下载,然后替换download()函数,再执行该程序,就会自动解压文件文本生成数据列表。...1)语音文件需要放在dataset/audio/目录下。 2)把数据列表文件存在dataset/annotation/目录下,程序会遍历这个文件下的所有数据列表文件。...启动服务之后,如果在本地运行的话,在浏览器上访问http://localhost:5000,否则修改为对应的 IP地址。...打开页面之后可以选择上传长音或者短语音音频文件,也可以在页面上直接录音,录音完成之后点击上传,播放功能只支持录音的音频。

    75320

    00-ALSA框架实现录音

    要求 根据现有音频框架实现一个录音程序,要求:PCM格式, 采样率16K, S16LE, 单通道 使用ffmpeg 将录音音频转换为采样率为48K wav格式的文件 使用ffmpeg 将录音音频转换为...MP3格式的文件 使用Audacity查看你的录音频谱 使用sndpeek分析你的音频数据,并写出心得 平台 Linux-3.4.2 arm-linux-gcc-4.3.2 精简版yaffs文件系统 JZ2440...1.0.27.2 mkdir /dev/snd cd /dev/snd/ ln -s /dev/controlC0 ln -s /dev/pcmC0D0p ln -s /dev/pcmC0D0c 测试播放音频...aplay Windows.wav 应用程序 wav_parser 主要对wav音频文件的分析和封装,移植的开源的wav封装库 capture 具体实现录音操作的操作 ffmpeg转换 音频文件采样率转换为...48k wav 格式文件 具体实现: ffmpeg -i input.wav -ar 48k output.wav 音频文件转换为mp3格式的文件 具体实现: ffmpeg -i input.wav

    2.3K20

    (译)SDL编程入门(21)音效和音乐

    就像之前一样,只是把头文件、库文件和二进制文件放在正确的地方,并把你的编译器配置成使用它们。...第一个参数设置声音频率,44100是一个标准频率,在大多数系统上都可以使用。第二个参数确定采样格式,这里我们同样使用默认格式。第三个参数是硬件通道数,这里我们使用的是2个通道的立体声。...void close() { //Free loaded images gPromptTexture.free(); //Free the sound effects...每一个被播放的声音效果都有一个与之相关的通道。当你想暂停或停止一个正在播放的效果时,你可以停止它的通道。...当按下0时,如果音乐正在播放,我们使用Mix_HaltMusic[18]停止音乐。 在 这里[19]下载本教程的媒体和源代码。 原文链接[20] 「关注我的公众号:编程之路从0到1」 ?

    1.2K20

    嵌入式linux下如何尽快播放开机音乐

    今天在考虑如何尽快启动一个应用程序,播个开机音乐什么的。.../bin/sh /etc/init.d/zqbNetwork start 这个应用程序呢,暂且叫做 zqbMusic 吧,是用来放音乐的,此处想放点开机提示音,所以我们有个音乐文件,叫kaiji.wav.../zqbMusic kaiji.wav 就播放了。大概一秒的音乐。 那么问题就是,如何尽快播放这个开机提示音乐。 先来个简单粗暴,直接加到rcS脚本后面, #!.../zqbMusic kaiji.wav 那么就在五秒多的时候,开始播放,播放完毕六秒多,打印出了"/ #",这样就比较不好了,我“/ #”之后还要启动其他应用程序呢,放音乐直接延迟了其他事情一秒多。...再提前就要到内核里面去了,唔,在驱动初始化完毕之后,补一个initcall,就用来放音乐,理论上似乎也是可以的,就是有点别扭。 再提前?

    1.7K10

    基于Kersa实现的声纹识别

    自定义数据训练 本节介绍自定义数据集训练,如何不想训练模型,可以直接看下一节,使用官方公开的模型进行声纹识别。....wav 1 dataset/ST-CMDS-20170001_1-OS/20170001P00001I0003.wav 1 1、本项目默认是支持Aishell,Free ST-Chinese-Mandarin-Corpus...训练 在执行训练之前,可能需要修改train.py中的几个参数。 gpu是指定是用那个几个GPU的,如何多卡的情况下,最好全部的GPU都使用上。...resume这个是用于恢复训练的,如何之前有训练过的模型,可以只用这个参数指定模型的路径,恢复训练。 batch_size根据自己显存的大小设置batch的大小。...n_classes是分类数量,这个可以查看上一步生成数据列表最后一个得到分类数量,但也记得加1,因为label是从0开始的。

    3.7K61

    stm32mp157开发板声卡接口测试

    4.5 声卡接口测试 4.5.1 耳机接口测试方法 此节演示使用三段式耳机在 100ask_stm32mp157_pro 开发板上录制声音、播放音频。...test.wav :指定录音文件的名称以及格式。其中 test 是文件名称,wav 是音频格式。支持的格式有wav、raw 和 au 等。...播放音频: 将耳机插入开发板耳机孔,使用 aplay 进行播放音频文件: [root@100ask:~]# aplay -v --format=cd --device=plughw:0,0 test.wav...test.wav :指定录音文件的名称以及格式。其中 test 是文件名称,wav 是音频格式。支持的格式有wav、raw 和 au 等。...注意:录音后再播放所录得的音频文件,只有一边耳朵有声音,因为只有一个麦克采集单声道数据。 还可以通过 ssh 登录开发板,将电脑中的 wav 格式的音频上传到开发板,再用 aplay 进行播放。

    2.4K30
    领券