Qt网站上有关于使用音频API的例子,但坦率地说我根本不理解它们。
我想象的是将值数组(字节,整数......)写入某个音频缓冲区并让声卡“播放”它们(实际上是DAC)。
伪代码:
// Square wave?
const int values[] = {255,255,255,255, 0,0,0,0, 255,255,255,255 ...};
// Create output that will buffer the bytes and put them on digi to analog converter
RawAudioOutput output(BIT_RATE_CONSTANT, ... some other parameters ...);
output.start();
output.writeBytes(values, sizeof(values));
我能完成类似的事情吗?我该怎么办呢?我知道我可以在Audacity中模拟方波(听起来不太好),所以我想这是可能的。怎么样?
答案 0 :(得分:1)
在Qt中,如果要将值数组写入音频缓冲区,则其类为QAudioOutput。值数组的格式可能会有所不同,所有平台都应支持PCM格式。
Qt附带an example that demonstrates the usage of QAudioOutput,请看一下。在该示例中,sachin@sachin-laptop:~$ gem list lob
*** LOCAL GEMS ***
globalid (0.3.6, 0.3.5)
lob (2.4.0)
sachin@sachin-laptop:~$ irb
2.2.2 :001 > require 'lob'
=> true
2.2.2 :002 > Lob.api_key = "test_00001"
=> "test_00001"
2.2.2 :003 > @lob = Lob.load
=> #<Lob::V1::Resource:0x000000034e0a40 @options={:api_host=>"api.lob.com", :protocol=>"https", :api_version=>nil, :api_key=>"test_00001"}>
2.2.2 :004 > @lob.letters
=> #<Lob::V1::Letter:0x0000000342de40 @resource=#<Lob::V1::Resource:0x000000034e0a40 @options={:api_host=>"api.lob.com", :protocol=>"https", :api_version=>nil, :api_key=>"test_00001"}>>
2.2.2 :005 >
函数创建值的数组,然后将其发送到音频设备。
当然,从一组值中播放音频是非常低级的。使用QMediaPlayer,Qt还提供了一个高级类来播放声音文件(.wav,.mp3),视频文件甚至流。