Qt QUdpsocket audiostreaming

问题描述 投票:0回答:1

我正在尝试clone QTCpsocket的音频流模型,但现在使用QUdpsocket(虚拟连接),虽然看起来代码正在执行,但是,实际上它没有做好工作,我无法获得流式音频捕获;

主要关注点是:是否可以使用QUDpsocket启动QAudioOutput?

然而要清楚地提到这个代码与TCP socket工作正常!

代码段:

在server.h文件中

private:
    QUdpSocket *socketUDP;

并在.CPP文件中

udpServer::udpServer(QObject *parent) : QObject(parent)
{
    socketUDP = new QUdpSocket(this);
    serverAddress = QHostAddress("192.168.1.8");
    //socketUDP->bind(serverAddress, 1357);
    socketUDP->bind(1357, QUdpSocket::ShareAddress);
    socketUDP->open(QIODevice::ReadOnly);
    connect(socketUDP, &QUdpSocket::readyRead, this, &udpServer::playStreamedAudio);

}

然后是playstream()方法:

    void udpServer::playStreamedAudio() {
      // set the QAudioFormat parameters of output audio device.
      my_QAudioFormat = new QAudioFormat;
      my_QAudioFormat->setSampleRate(48000);
      my_QAudioFormat->setChannelCount(1);
      my_QAudioFormat->setSampleSize(8);
      my_QAudioFormat->setCodec("audio/pcm");
      my_QAudioFormat->setByteOrder(QAudioFormat::LittleEndian);
      my_QAudioFormat->setSampleType(QAudioFormat::UnSignedInt);
      //
    // get default audio output device 
      audiOutputDevice = QAudioDeviceInfo::defaultOutputDevice();

      audiooutput = new QAudioOutput(audiOutputDevice,my_QAudioFormat, this);
  // attach to socket!
    qDebug() << "Playaing AudioStream";
    socketUDP->open(QIODevice::ReadOnly);
    audiooutput->start(socketUDP); // the Audio output device shall listen to server socket for audio
}
qt qudpsocket
1个回答
0
投票

事实证明,UDP套接字可能不适合作为QioDevices进行接口......似乎它们不是那样的,数据包最好写入文件然后进行处理。

© www.soinside.com 2019 - 2024. All rights reserved.