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 解决方案中经常被低估的一个方面是媒体质量监控。我们需要记住,我们构建实时解决方案不仅仅是为了进行音频和视频通信,而是为了提供尽可能好的体验。为了确保做到这一点,我们需…

    2024年3月26日
  • WebRTC 中 WebSocket 的使用

    1. WebSocket 概念 WebSocket 是一种在单个 TCP 连接上进行全双工通信的网络协议。意为:经过一次 TCP 握手就可以直接创建持久性连接,进而可实现服务端和客…

    2023年2月26日
  • WebRTC Android预览实现

    在前面文章中,我们分析了 WebRTC Android 相机采集的实现,本文中我们将分析预览的实现。 有过一定相机开发经验的朋友可能会疑惑,预览还有什么好分析的,不是直接&nbsp…

    2023年2月10日
  • WebRTC 和 AI:创新和影响的交集

    向我们这一代人的前瞻性思维打招呼! 我是WebRTC先生,这是我在实时音视频通信和游戏流方面的历程的证明。作为一名经验丰富的WebRTC工程师和人工智能研究科学家,我亲身经历了这两…

    2023年6月14日
  • 用于WebRTC的可伸缩视频编码

    网络实时通信(WebRTC)技术承诺了超低延迟的流媒体,但是有一个问题(可以这么说)。该技术是出了名的难以扩展,而且开发者尝试得越多,就越难保持构成WebRTC吸引力核心的速度。输…

    2023年1月19日
  • HTML5 WebRTC 示例

    WebRTC支持用于语音呼叫、视频聊天和 P2P 文件共享的浏览器到浏览器应用程序。 WebRTC 可用于 Chrome、Opera 和 Firefox等主流浏览器。Web RTC…

    2023年3月8日

发表回复

登录后才能评论