diff --git a/client/webrtc_demo/src/mainwindow.cpp b/client/webrtc_demo/src/mainwindow.cpp index fe7f759..1b140f5 100644 --- a/client/webrtc_demo/src/mainwindow.cpp +++ b/client/webrtc_demo/src/mainwindow.cpp @@ -97,7 +97,7 @@ int WebrtcHanlder::InitWebrtc() webrtc::PeerConnectionInterface::RTCConfiguration config; config.sdp_semantics = webrtc::SdpSemantics::kUnifiedPlan; - config.enable_dtls_srtp = true; + config.enable_dtls_srtp = false; webrtc::PeerConnectionInterface::IceServer server; server.uri = "stun:stun.l.google.com:19302"; // stun服务器 config.servers.push_back(server); @@ -175,7 +175,7 @@ public: void WebrtcHanlder::SetRemoteSdp(QString sdp) { - qDebug()<<"recv" << sdp; + qDebug()<<"SetRemoteSdp" << sdp; auto doc = QJsonDocument::fromJson(sdp.toUtf8()); auto obj = doc.object(); auto ssdp = obj["sdp"].toString(); @@ -219,6 +219,7 @@ void WebrtcHanlder::SetRemoteCandidate(QString scandidate) sdp_mlineindex = obj[kCandidateSdpMlineIndexName].toInt(); sdp_mid = obj[kCandidateSdpMlineIndexName].toString().toStdString(); sdps = obj[kCandidateSdpName].toString().toStdString(); + qDebug()<<"remote candidate"< candidate( webrtc::CreateIceCandidate(sdp_mid, sdp_mlineindex, sdps, &error)); @@ -253,8 +254,13 @@ void WebrtcHanlder::OnSignalingChange(webrtc::PeerConnectionInterface::Signaling void WebrtcHanlder::OnAddTrack(rtc::scoped_refptr receiver, const std::vector > &streams) { - RTC_LOG(INFO) << __FUNCTION__ << " " << receiver->id(); - OnRemoteTrack(receiver->track().release()); + qDebug() << __FUNCTION__ << " " << receiver->id().c_str(); + auto srcs = receiver->GetSources(); + for (auto x : srcs){ + qDebug()<<"sources "<track().release()->kind() == webrtc::MediaStreamTrackInterface::kVideoKind) + OnRemoteTrack(receiver->track().release()); } void WebrtcHanlder::OnRemoveTrack(rtc::scoped_refptr receiver) @@ -276,6 +282,8 @@ void WebrtcHanlder::OnIceGatheringChange(webrtc::PeerConnectionInterface::IceGat void WebrtcHanlder::OnIceCandidate(const webrtc::IceCandidateInterface *candidate) { + qDebug() << __FUNCTION__ << " " <sdp_mid().c_str()<< " " <sdp_mline_index(); + QJsonObject addr; addr.insert(kCandidateSdpMidName, candidate->sdp_mid().c_str()); addr.insert(kCandidateSdpMlineIndexName,candidate->sdp_mline_index()); @@ -422,9 +430,8 @@ void MainWindow::on_track_add(webrtc::MediaStreamTrackInterface *data) auto* video_track = static_cast(track); qDebug()<<"remote trackid is "<id().c_str(); remote_renderer_.reset(new VideoRenderer( 1, 1, video_track)); - auto p = remote_renderer_.get(); - connect((VideoRenderer*)(p),SIGNAL(UpdateFrame(rtc::scoped_refptr&)), + connect((VideoRenderer*)(remote_renderer_.get()),SIGNAL(UpdateFrame(rtc::scoped_refptr&)), ui->openGLWidget,SLOT(CameraData(rtc::scoped_refptr &)), Qt::ConnectionType::QueuedConnection); } @@ -543,6 +550,7 @@ static void RawToBmp(unsigned char *pRawImage, int ImageHeight, int ImageWidth, } + void VideoRenderer::OnFrame(const webrtc::VideoFrame &video_frame) { { @@ -552,7 +560,6 @@ void VideoRenderer::OnFrame(const webrtc::VideoFrame &video_frame) if (video_frame.rotation() != webrtc::kVideoRotation_0) { buffer = webrtc::I420Buffer::Rotate(*buffer, video_frame.rotation()); } - SetSize(buffer->width(), buffer->height()); RTC_DCHECK(image_ != NULL); // libyuv::I420ToARGB(buffer->DataY(), buffer->StrideY(), buffer->DataU(), // buffer->StrideU(), buffer->DataV(), buffer->StrideV(), @@ -561,16 +568,18 @@ void VideoRenderer::OnFrame(const webrtc::VideoFrame &video_frame) // buffer->width(), buffer->height()); // rgbadata(image_, // (uint64_t)(buffer->width()*buffer->height()*4)); - //UpdateFrame(buffer); auto i420_buffer_ = video_frame.video_frame_buffer()->ToI420(); auto type = video_frame.video_frame_buffer()->type(); - libyuv::I420ToARGB(i420_buffer_->DataY(), i420_buffer_->StrideY(), i420_buffer_->DataU(), - i420_buffer_->StrideU(), i420_buffer_->DataV(), i420_buffer_->StrideV(), - image_, - i420_buffer_->width()*4, - i420_buffer_->width(), i420_buffer_->height()); - RawToBmp(image_,i420_buffer_->height(),i420_buffer_->width(),32,"d://sss2.bmp"); - qDebug()<<"local size: "<width() << i420_buffer_->height(); + SetSize(i420_buffer_->width(), i420_buffer_->height()); + UpdateFrame(buffer); + +// libyuv::I420ToARGB(i420_buffer_->DataY(), i420_buffer_->StrideY(), i420_buffer_->DataU(), +// i420_buffer_->StrideU(), i420_buffer_->DataV(), i420_buffer_->StrideV(), +// image_, +// i420_buffer_->width()*4, +// i420_buffer_->width(), i420_buffer_->height()); +// RawToBmp(image_,i420_buffer_->height(),i420_buffer_->width(),32,"d://sss2.bmp"); +// qDebug()<<"local size: "<width() << i420_buffer_->height(); } } diff --git a/client/webrtc_demo/src/mainwindow.ui b/client/webrtc_demo/src/mainwindow.ui index 080696d..35bab6c 100644 --- a/client/webrtc_demo/src/mainwindow.ui +++ b/client/webrtc_demo/src/mainwindow.ui @@ -73,7 +73,7 @@ - ws://127.0.0.1:9555/ws + ws://192.168.5.192:9555/ws