Webrtc中如何展示窗口内容,同时不包含window title

Webrtc内置2种视频源捕捉器,屏幕的窗体的。它的窗体模式是带着微软视窗系统所有的window标准的标题栏的,也就是windows title。 那么怎么获取纯净的窗口内容,不要标题栏呢?

需要自己稍微计算下区域。 如下代码

重点就是 windows title 默认的高度是30个像素,代码中用startYPosition 操作。

void QLWindowCaptureImpl::OnCaptureResult (webrtc::DesktopCapturer::Result result, std::unique_ptr<webrtc::DesktopFrame> desktopframe)
{
    if (result != webrtc::DesktopCapturer::Result::SUCCESS)
    {
        return;
    }
 
    int width = desktopframe->stride () / 4;
    int startYPosition = 0;
    int height = desktopframe->size ().height ();
 
    if (QL::QLGlobalConfig::get_instance().IsHideWindowTitleInAppCaptureType())
    {
        //This is offical window title height;
        startYPosition = 30;
        height -= startYPosition;
    }
 
    if (!mI420YUVBuffer.get () || mI420YUVBuffer->width () * mI420YUVBuffer->height () < width * height)
    {
        mI420YUVBuffer = webrtc::I420Buffer::Create (width, height);
    }
 
    int stride = width;
    uint8_t* yplane = mI420YUVBuffer->MutableDataY ();
    uint8_t* uplane = mI420YUVBuffer->MutableDataU ();
    uint8_t* vplane = mI420YUVBuffer->MutableDataV ();
 
    libyuv::ConvertToI420 (desktopframe->data (), 0, yplane, stride, uplane,
                           (stride + 1) / 2, vplane, (stride + 1) / 2, 0, startYPosition,
                           width, height, width, height, libyuv::kRotate0,
                           libyuv::FOURCC_ARGB);
 
    webrtc::VideoFrame frame = webrtc::VideoFrame (mI420YUVBuffer, 0, 0, webrtc::kVideoRotation_0);
 
    //将这个VideoFrame数据压倒流中,传出去
    this->OnFrame (frame);
}

本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/webrtc/25940.html

(0)

相关推荐

  • WebRTC 架构格局正在发生变化

    现在有一种新型的 WebRTC 应用程序架构正在发展,称为 WebRTC Unbundling,尽管它可能不适用于所有应用程序场景,但至少在开发新的实时视频开发项目时应该考虑一下它。在过去,三种不同类型的 WebRTC 应用架构即符合标准的 WebRTC、开源媒体服务器和称为 CPaaS 的商业媒体服务器是基于 WebRTC 开发的选项,这三个仍然是有效的架构选择,WebRTC Unbundling 只是第四个选择,可以认为它是符合标准的 WebRTC选项的另一种形式。

    2022年4月28日
  • WebRTC iOS 相机采集

    WebRTC-iOS 的相机采集主要涉及到以下几个类:AVCaptureSession, RTCCameraVideoCapturer, RTCVideoFrame。 AVCapt…

    2023年3月21日
  • WebRTC信号槽机制

    本文所有源码均基于 WebRTC M85 (branch-heads/4183) 版本进行分析。 在阅读 WebRTC 源码过程中,经常可以看到 sigslot(信号槽)相关的代码…

    2023年2月15日
  • 学习 WebRTC 的最佳工具和 Demo

    在这篇文章中,作者 Vadim Beskrovnov 将分享对实际理解 WebRTC 至关重要的关键工具、演示应用程序和开放项目。本文将不提供有关 WebRTC 任何部分的教程或详…

    2024年3月21日
  • WebRTC:标准、技术和开发者生态系统

    实时通信已成为我们通过互联网进行互动的重要方式。从视频通话和直播到互动游戏和即时消息,我们一直依赖于可靠的即时信息交流。WebRTC 是一种变革性的技术标准,可直接通过Web浏览器…

    2024年7月18日
  • webrtc之rtp协议

    本文介绍一下rtp协议和rtcp协议。因为ffmpeg的rtp/rtcp协议实现比较简单,这里改用其他开源代码(mediasoup)来介绍。 作者:音视频小话原文:https://…

    2024年11月26日