热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用本机系统调用在C++中播放声音?-PlayingsoundinC++usingnativesystemcalls?

SoinWindows,youcanusethePlaySoundfunctiontoplayanMP3fileinaC++application.Whatwou

So in Windows, you can use the PlaySound function to play an MP3 file in a C++ application. What would be some similar functions available for use in Mac OS X/Linux? I would also appreciate it if you could link to some sample Hello-World type programs demonstrating this.

因此在Windows中,您可以使用PlaySound功能在C ++应用程序中播放MP3文件。在Mac OS X / Linux中可以使用哪些类似的功能?如果您可以链接到一些示例Hello-World类型的程序,我也将不胜感激。

3 个解决方案

#1


4  

You can just open("/dev/dsp") and write to it. That's as "native syscall" as you can get, I believe.

你可以打开(“/ dev / dsp”)并写入它。我相信,这就像你可以获得的“原生系统调用”一样。

#2


3  

Concerning Audio: Linux != Mac, so I will answer both separately.

关于音频:Linux!= Mac,所以我会单独回答。

MacOS uses the core audio framework for low level audio. Building on that there are several higher level APIs. If you just want to play a sound file the AV Foundation Framework is most likely the way to go. Here you find an example to build a simple app for iOS, which can be ported to MacOS easily.

MacOS将核心音频框架用于低级音频。在此基础上,有几个更高级别的API。如果您只想播放声音文件,AV Foundation Framework很可能是最佳选择。在这里,您可以找到为iOS构建简单应用程序的示例,该应用程序可以轻松移植到MacOS。

For Linux the whole situation is quite delicate. There exist many different frameworks and libraries and it very unclear which is low and which is high level, since some of them are emulating the others. Basically there is ALSA and OSS for low level audio. Both of them are crap. Jack is aiming to provide a framework for professional audio but it's not very portable (at least if you are interested in embedded devices). Most Linux OS currently are using PulseAudio as their audio server, which has also a simple API for just playing a single sound and a very difficult API for low level stuff. And then there is the gstreamer library, which is rather portable and has a half way descent API and is especially designed for playing audio & video files and streams, and so probably the way to go on linux.

对于Linux来说,整个情况非常微妙。存在许多不同的框架和库,并且非常不清楚哪个是低的并且是高级的,因为其中一些正在模仿其他的。基本上ALSA和OSS用于低级音频。他们俩都是垃圾。 Jack的目标是提供专业音频的框架,但它不是非常便携(至少如果你对嵌入式设备感兴趣)。目前大多数Linux操作系统都使用PulseAudio作为他们的音频服务器,它还有一个简单的API,只用于播放单个声音,而且是一个非常难以用于低级别的API。然后有gstreamer库,它相当便携,有半路下降API,专门用于播放音频和视频文件和流,所以可能是继续使用linux的方法。

I personally recommend to use PortAudio, which is a library that provides – as the name states – an audio framework which is portable across several operating systems and audio frameworks. PortAudio is also well designed and has a simple but flexible API.

我个人建议使用PortAudio,它是一个提供 - 如名称所示 - 的音频框架,可以跨多个操作系统和音频框架移植。 PortAudio设计精良,具有简单但灵活的API。

#3


1  

Well, I'm not sure if current desktops have some more advanced services/libraries that play audio files, but if you really want to do some low-level OS audio output, start looking here. Maybe this is a little too low-level for your needs.

好吧,我不确定当前桌面是否有一些更高级的服务/库来播放音频文件,但如果你真的想做一些低级别的OS音频输出,请从这里开始。也许这对你的需求来说太低了。


推荐阅读
  • 当程序到后台后,继续完成LongRunning Task 任务
    原文:http:blog.sina.com.cnsblog_7b9d64af0101cjci.html(2013-04-0921:27:24)我们知道, ... [详细]
  • 本文详细介绍了cisco路由器IOS损坏时的恢复方法,包括进入ROMMON模式、设置IP地址、子网掩码、默认网关以及使用TFTP服务器传输IOS文件的步骤。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文讨论了如何在dotnet桌面(Windows)应用程序中添加图标。作者提到可以使用dotnet命令行工具与resource.rc文件一起使用来为标准.NET核心应用程序添加图标。作者还介绍了在创建控制台应用程序时如何编辑projeto1.csproj文件来添加图标。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 移动–镜像y轴的视频文件剪辑原文:https://www. ... [详细]
  • 最近在学Python,看了不少资料、视频,对爬虫比较感兴趣,爬过了网页文字、图片、视频。文字就不说了直接从网页上去根据标签分离出来就好了。图片和视频则需要在获取到相应的链接之后取做下载。以下是图片和视 ... [详细]
  • 1,初始化AVAudioSession7.0第一次运行会提示,是否允许使用麦克风AVAudioSession*session[AVAudioSessionsharedInsta ... [详细]
  • 1. Makesureyouhaveimake.(SeetheBUILDNOTESfileifyouwanttotrybuildingwi ... [详细]
author-avatar
liuyidii
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有