2017-12-26 2 views
0

나는 의 오디오 스트리밍 모델을 시도하고 있지만 지금은 QUdpsocket (가상 연결)을 사용하고 있습니다. 그래도 코드가 실행되고있는 것처럼 보이지만 효과적으로 작동하지 않으면 오디오가 스트리밍되지 않습니다. 캡처 됨;Qt QUdpsocket audiostreaming

주요 초점 포인트는 다음과 같습니다. QUDpsocket을 사용하여 QAudioOutput을 시작할 수 있습니까 ???

그러나이 코드는 TCP socket으로 잘 작동한다고 분명하게 언급합니다!

코드 스 니펫 :

server.h 파일에

private: 
    QUdpSocket *socketUDP; 

및 .CPP에서

이 playstream() 메서드를 다음

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); 

} 

파일 :

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 
} 
+1

'socketUDP'를 만들고 구성하는 코드를 표시하도록 질문을 편집 할 수 있습니까? –

+0

G.M, socketUDP를 생성하고 편집하는 코드. –

+0

'socketUDP'에서 데이터를 읽는 위치는 어디입니까? 아니면 내가 잘못 이해 한거야? 데이터 그램을 수신하기 위해서는 적절한 호스트/포트 매개 변수로 ['bind'] (http://doc.qt.io/qt-5/qabstractsocket.html#bind)를 호출해야한다고 생각합니다. –

답변

0

그것을 UDP 소켓이 적합하지 않을 수 있음이 밝혀졌습니다. io가 QioDevices로 인터페이스 될 수 있습니다 ... 의도하지 않은 것처럼 보입니다. 패킷을 파일에 쓰고 처리하는 것이 더 좋습니다.