我有一个简单的c ++程序,使用SFML播放.wav声音文件。它看起来像这样:
#include <SFML/Audio.hpp>
#include <iostream>
int main()
{
sf::SoundBuffer buffer;
if (!buffer.loadFromFile("beep-01a.wav"))
return -1;
sf::Sound sound;
sound.setBuffer(buffer);
sound.play();
std::cout << "Hello World" << std::endl;
return 0;
}
我在ubuntu 16.04 LTS上运行它并用
编译它$ g++ -c main.cpp
$ g++ main.o -o sfml-app -lsfml-audio
$ ./sfml-app
我已经使用apt-get作为包安装了SFML。当我运行./sfml-app时,它输出“Hello World”,但我听不到任何声音。我已经尝试调高音量,重新启动计算机,戴上耳机等。当我通过双击播放声音文件时,它会发出哔声。
感谢您的帮助
答案 0 :(得分:3)
即使您的代码完全正确,也可能有很多原因导致无法播放声音
但是,它不是,因为sf :: Sound :: play 异步在另一个线程中播放声音(如here所述)但你的应用程序完成得非常快,因此给出了其他线程没有真正的机会播放大部分指定的声音缓冲区。
所以为了至少有理论上听到任何东西的机会,我建议插入一些指令来阻止主线程,比如
<?php
$fields = [ 'tphy' => 2, 'tchem' => 2 ];
function sanitizeAttribute($str) {
return filter_var($str, FILTER_SANITIZE_MAGIC_QUOTES);
};
foreach( $fields as $field => $repeat ) {
$repeat = range(1, $repeat);
foreach( $repeat as $count ) {
$sField = sanitizeAttribute($field);
?><td><input type="number" id="<?= $sField . "_{$count}" ?>" disabled="disabled" min ="0" name="sci['<?= $sField ?>'][]"/><?php
}
}
退出之前。