使用 system() 函数在后台播放声音

Posted

技术标签:

【中文标题】使用 system() 函数在后台播放声音【英文标题】:using system() function to play sound in the background 【发布时间】:2015-05-30 20:05:04 【问题描述】:

我在 Ubuntu 中制作了一个游戏,其中我使用 .wav 文件使用此功能在后台播放声音:-

system("canebrake-gtk-play -f file_path")

但是当播放声音时整个游戏停止意味着动画停止但是在声音完成后,游戏又正常开始了....但这对我来说是一团糟并且表现出非常糟糕的影响,所以我想从我的游戏中删除这个令人毛骨悚然的东西......所以任何帮助都会很明显...... 谢谢

【问题讨论】:

使用线程/子进程来播放声音,但这实际上不是一个好方法。尝试使用一些 C++ 框架来播放声音。 【参考方案1】:

system("canebrake-gtk-play -f file_path")

这将从您的代码同步执行。这就是为什么您的程序在执行时被阻止的原因。

您可以考虑使用fork()exec()在后台执行。

提供单独的线程(而不是进程)是另一种选择。

【讨论】:

@MohsinMushtaq 请看这里:***.com/questions/14830611/to-system-or-fork-exec.【参考方案2】:

这是一种快速而肮脏的方法。

pid_t pid = fork();

if (pid == 0) 
   system("canebrake-gtk-play -f file_path");
   exit(0);

你也可以使用一个线程而不是另一个进程。

【讨论】:

以上是关于使用 system() 函数在后台播放声音的主要内容,如果未能解决你的问题,请参考以下文章

使用 AVAudioPlayer 在后台播放声音序列

使用 AVAudioPlayer 在后台播放声音而不停止 ipod 音乐

当应用程序处于后台时播放声音

当浏览器在后台运行时收到通知时,使用 Firebase 播放声音

iOS - 无法在后台播放声音

播放按钮声音而不停止在后台运行的音乐