使用 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 在后台播放声音而不停止 ipod 音乐