资源简介
实时录音与播放的内存实现 Qt代码。下载前请先阅读http://blog.csdn.net/kakadiablo/article/details/7561509#comments

代码片段和文件信息
#include “bufferInheritedfromQIODevice.h“
const qint64 BufferDurationUs = 10 * 1000000; // 10second
Generator::Generator(QByteArray buffer)
{
m_GeneratorBuffer = buffer;
m_pos=0;
}
Generator::~Generator()
{
}
void Generator::start()
{
open(QIODevice::ReadOnly);
}
void Generator::stop()
{
m_pos = 0;
close();
}
qint64 Generator::readData(char *data qint64 len)
{
qDebug() << “len is “ << len;
qint64 total = 0;
while (len - total > 0) {
const qint64 chunk = qMin((m_GeneratorBuffer.size() - m_pos) len - total);
memcpy(data + total m_GeneratorBuffer.constData() + m_pos chunk);
m_pos = (m_pos + chunk) % m_GeneratorBuffer.size();
total += chunk;
qDebug() << “total is “< }
return total;
}
qint64 Generator::writeData(const char *data qint64 len)
{
Q_UNUSED(data);
Q_UNUSED(len);
return 0;
}
qint64 Generator::bytesAvailable() const
{
return m_GeneratorBuffer.size() + QIODevice::bytesAvailable();
}
void bufferPlayback::startPlayback()
{
if (m_audioOutput) {
m_mode = QAudio::AudioOutput;
m_dataLengthPlay = 0;
m_generator->start();
m_audioOutput->start(m_generator);
}
}
bufferPlayback::bufferPlayback()
: m_mode(QAudio::AudioInput)
m_audioInput(0)
m_audioInputDevice(QAudioDeviceInfo::defaultInputDevice())
m_audioInputIODevice(0)
m_audioOutputDevice(QAudioDeviceInfo::defaultOutputDevice())
m_audioOutput(0)
m_bufferLength(0)
m_dataLengthPlay(0)
m_dataLengthRecord(0)
{
selectFormat();
initialize();
QList inputDevices = QAudioDeviceInfo::availableDevices(QAudio::AudioInput);
m_audioInputDevice = inputDevices.at(0);
QList outputDevices = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput);
m_audioOutputDevice = outputDevices.at(0);
QTimer::singleShot(3000 reinterpret_castject*>(this) SLOT(startPlayback()));
startRecording();
qDebug() << “Device name: “ << m_audioInputDevice.deviceName();
qDebug() << “Device name: “ << m_audioOutputDevice.deviceName();
}
bufferPlayback::~bufferPlayback()
{
delete m_audioInput;
delete m_audioOutput;
delete m_generator;
}
qint64 bufferPlayback::audioLength(const QAudioFormat &format qint64 microSeconds)
{
qint64 result = (format.frequency() * format.channels() * (format.sampleSize() / 8))
* microSeconds / 1000000;
result -= result % (format.channelCount() * format.sampleSize());
return result;
}
qint64 bufferPlayback::bufferLength() const
{
return m_bufferLength;
}
void bufferPlayback::initialize()
{
m_bufferLength = audioLength(format BufferDurationUs);
m_buffer.resize(m_bufferLength);
m_buffer.fill(0);
m_audioInput = new QAudioInput(m_audioInputD
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 417 2012-05-08 15:44 3 methods\bufferCircularPlaybackInheritedFromQIODevice\bufferCircularPlaybackInheritedFromQIODevice.pro
文件 46208 2012-07-02 23:33 3 methods\bufferCircularPlaybackInheritedFromQIODevice\bufferCircularPlaybackInheritedFromQIODevice.pro.user
文件 5738 2012-05-13 01:40 3 methods\bufferCircularPlaybackInheritedFromQIODevice\bufferInheritedfromQIODevice.cpp
文件 2043 2012-07-02 23:30 3 methods\bufferCircularPlaybackInheritedFromQIODevice\bufferInheritedfromQIODevice.h
文件 196 2012-05-08 15:32 3 methods\bufferCircularPlaybackInheritedFromQIODevice\main.cpp
文件 654 2012-05-08 15:27 3 methods\bufferCircularPlaybackInheritedFromQIODevice\mainwindow.ui
文件 7331 2012-05-12 01:29 3 methods\inheritedVersion3\inheritedVersion3.cpp
文件 2521 2012-05-12 01:29 3 methods\inheritedVersion3\inheritedVersion3.h
文件 368 2012-07-02 23:33 3 methods\inheritedVersion3\inheritedVersion3.pro
文件 45938 2012-07-02 23:33 3 methods\inheritedVersion3\inheritedVersion3.pro.user
文件 201 2012-07-02 23:32 3 methods\inheritedVersion3\main.cpp
文件 654 2012-05-12 01:19 3 methods\inheritedVersion3\mainwindow.ui
文件 4958 2012-05-21 23:20 3 methods\mybuffer\deployment.pri
文件 182 2012-05-21 23:29 3 methods\mybuffer\main.cpp
文件 5591 2012-05-21 23:29 3 methods\mybuffer\mainwindow.cpp
文件 1455 2012-05-21 23:29 3 methods\mybuffer\mainwindow.h
文件 554 2012-05-21 23:20 3 methods\mybuffer\mainwindow.ui
文件 232 2012-05-21 23:20 3 methods\mybuffer\mybuffer.desktop
文件 1758 2012-05-21 23:33 3 methods\mybuffer\mybuffer.pro
文件 121628 2012-06-02 21:35 3 methods\mybuffer\mybuffer.pro.user
文件 6596 2012-05-21 23:20 3 methods\mybuffer\mybuffer.svg
文件 3400 2012-05-21 23:20 3 methods\mybuffer\mybuffer64.png
文件 4945 2012-05-21 23:20 3 methods\mybuffer\mybuffer80.png
文件 297 2012-05-21 23:20 3 methods\mybuffer\mybuffer_harmattan.desktop
文件 110 2012-05-21 23:20 3 methods\mybuffer\qtc_packaging\debian_fremantle\changelog
文件 2 2012-05-21 23:20 3 methods\mybuffer\qtc_packaging\debian_fremantle\compat
文件 4908 2012-05-21 23:20 3 methods\mybuffer\qtc_packaging\debian_fremantle\control
文件 1371 2012-05-21 23:20 3 methods\mybuffer\qtc_packaging\debian_fremantle\copyright
文件 138 2012-05-21 23:20 3 methods\mybuffer\qtc_packaging\debian_fremantle\README
文件 1933 2012-05-21 23:20 3 methods\mybuffer\qtc_packaging\debian_fremantle\rules
............此处省略18个文件信息
- 上一篇:512乘512的BMP格式的Lena图
- 下一篇:宿舍管理系统论文 宿舍管理系统论文
相关资源
- vtk QT做的三维地质可视化系统2of2
- 使用 SoundPool 同时播放多个音频
- Qt局域网聊天软件
- Qt Creator opengl实现四元数鼠标控制轨迹
- QT局域网聊天系统(基于QT5.修改过)
- qt-电子点菜系统
- 音频测试软件
- C 餐厅叫号系统(QT平)
- QT 实现文件下载
- qt图像处理
- QT,JPEG解码源代码(已完成)
- Qt 播放音频文件
- 模拟电路课程设计(音频放大电路设
- Qt 读取16进制的data文件
- MQTT+串口(usart)透传
- 易语言QQTEA算法源码
- VC工程转Qt工程文件的工具
- 游戏音频图像提取工具GARbro
- MQTT推送Demo
- 基于Linux、QT的视频监控系统的设计与
- Qt 百度地图 定位
- QT酷炫界面开发指南《QmlBook》
- DBX数字音频处理器调试软件
- Jetson-TX2多声卡实现同时录音与播放
- Ubuntu下操作Excel,qt代码
- Qt图片浏览器 --基于Qt的Graphics View f
- qtnribbon2破解
- 音频测试文件pcmmp3aacamrg711ag711u等多种
- Qt软件开发 完整项目代码
- MQTT_3.1protocol_Specific中文版
评论
共有 条评论