• 感谢大家访问本站,希望本站的内容可以帮助到大家!

  • 如果觉得本站的内容有帮助,可以考虑打赏博主哦!

  • 问题反馈可发送邮件到stubbornhuang@qq.com

  • 计算机图形学与计算几何经典必备书单整理,下载链接可参考:https://www.stubbornhuang.com/1256/

  • 在本站开通年度VIP,无限制下载本站资源和阅读本站文章

  • 工资「喂饱肚子」,副业「养活灵魂」!

  • 欢迎大家交换友链,可在https://www.stubbornhuang.com/申请友情链接进行友链交换申请!

  • 本站由于前段时间遭受到大量临时和国外邮箱注册,所以对可注册的邮箱类型进行了限制!

  • 本站会放置Google广告用于维持域名以及网站服务器费用。

C++ – 使用Spout2将视频流发送到OBS

C++ 发布于2023-06-25 阅读 1,899次 0次评论 0次点赞 本文共1160个字,阅读需要3分钟。

之前的博文中介绍了如何配置Spout2的开发环境,在本文中我将简单介绍一下如何使用Spout2发送视频流OBS中进行推流。

1 使用Spout2 SDK将视频流发送到OBS

其实Spout2已经将API封装的非常简单易用了,通过参考官方的示例,我自己写了以下的代码将视频流推流到本机OBS中,示例代码如下

#include <iostream>

#include "SpoutLibrary.h"
#include "opencv2/opencv.hpp"

int main()
{
    std::string image_path = "../../resource/final.png";
    cv::Mat image = cv::imread(image_path, CV_8UC4);
    cv::Mat image_copy;
    cv::cvtColor(image, image_copy, cv::COLOR_BGRA2RGBA);
    int image_height = image.rows;
    int image_width = image.cols;

    SPOUTLIBRARY* ptr_spout = GetSpout();
    ptr_spout->EnableSpoutLog();
    ptr_spout->SetSpoutLogLevel(SpoutLibLogLevel::SPOUT_LOG_VERBOSE);
    ptr_spout->SpoutLog("Spout version : %s", ptr_spout->GetSDKversion().c_str());
    //sender->SetSenderName("spout_test");
    bool res = ptr_spout->CreateSender("spout_test", image_width, image_height);


    for(int i = 0; i < 100000; ++i)
    {
        ptr_spout->SendImage(image_copy.data, image_width, image_height, GL_RGBA);
        ptr_spout->HoldFps(30);
    }

    if (ptr_spout != nullptr)
    {
        ptr_spout->ReleaseSender();
        ptr_spout->Release();
    }

    return 0;
}

上述代码依赖OpenCV和Spout2。

首先通过OpenCV读取一张带有透明通道的图片,然后获取图片的宽高信息。之后创建一个Spout Sender对象,通过SendImage发送图片到本机OBS,循环发送100000遍模拟视频流,最后释放内存。当然你也可以使用OpenCV读取一个视频,将每一帧视频帧发送到OBS中。

下图是没有使用Spout2推流到OBS的画面
C++ - 使用Spout2将视频流发送到OBS-第0张图片

下图是使用Spout2发送透明图片到OBS的画面
C++ - 使用Spout2将视频流发送到OBS-第1张图片

欢迎扫码关注我的微信公众号,及时获取文章更新

微信公众号二维码

本文作者:StubbornHuang

版权声明:本文为站长原创文章,如果转载请注明原文链接!

原文标题:C++ – 使用Spout2将视频流发送到OBS

原文链接:https://www.stubbornhuang.com/2682/

发布于:2023年06月25日 13:56:27

修改于:2023年06月25日 13:56:27

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

文章末尾
上一篇
计算机图形学 - 实时次表面散射简介(Real-Time Subsurface Scattering)
计算机图形学
下一篇
深度学习 - 监督学习、半监督学习、无监督学习、自监督学习、强化学习等机器学习方式的概念、区别、优缺点
深度学习
当前分类随机文章推荐

发表评论

您必须 [ 登录 ] 才能发表留言!

关注我们的公众号

微信公众号