QTcpSocket & QAudioInput



  • Salve a tutti, in un programma che permette di comunicare tra un pc ed un altro via socket ho la necessità di far arrivare l'audio catturato dal microfono di un pc ad un altro.
    Dato che gia uso, per altri tipi di operazioni, QTcpSocket, mi chiedevo se riuscissi, ad utilizzarlo per trasmettere l'audio con QAudioInput.
    Così ho provato.
    @void Server::makeStream() {

    QAudioInput* audio;
    QAudioFormat format;
    
    format.setFrequency(8000);
    format.setChannels(1);
    format.setSampleSize(8);
    format.setCodec("audio/pcm");
    format.setByteOrder(QAudioFormat::LittleEndian);
    format.setSampleType(QAudioFormat::UnSignedInt);
    
    QAudioDeviceInfo info = QAudioDeviceInfo::defaultInputDevice();
    if (!info.isFormatSupported(format))  {
    qWarning()<<"default format not supported try to use nearest";
    format = info.nearestFormat(format);
    }
    
    audio = new QAudioInput(format, this);
    this->ToSocket("Listen Me");
    audio->start(this->SocketServer);
    

    }@
    Beh, pare che il server cominci a mandare dati ma adesso mi sfugge come posso farli leggere al client, per salvarli in un file magari.
    Ho provato questo:
    @void Client::readSocket()
    {
    QDataStream in(Socket);
    in.setVersion(QDataStream::Qt_4_0);
    if (audioincoming)
    {
    QFile f;
    f.setFileName("/tmp/test.wav");
    f.open( QIODevice::Append );
    in >> f;
    f.close();
    return;
    }
    }@
    Ma non posso usare l'operatore >>.

    Come potrei risolvere?



  • potresti provare eliminando il QDataStream ed utilizzando:
    @
    f.write( Socket.readAll() );
    @


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.