libvlc 流屏幕的一部分

2023-11-27

我想使用 vlc 库流式传输屏幕的一部分。我写了一个小例子:

#include <iostream>
#include <cstdlib>

#include <vlc/vlc.h>


int main(int argc, char**argv)
{
    libvlc_instance_t * inst = libvlc_new(argc, argv);
    libvlc_vlm_add_broadcast(inst, "mybroad",
            "screen://", "#transcode{vcodec=h264, venc=x264,vb=0,scale=0, acodec=mpga,ab=128,channels=2, samplerate=44100}:http{mux=ffmpeg{mux=flv}, dst=:7777/}",
            0, NULL, 1, 0);
    libvlc_vlm_play_media(inst, "mybroad");
    std::cout << "ready" << std::endl;
    // next two lines - it just for waitint
    int i;
    std::cin >> i;
    // omit the code that frees libvlc
    return 0;
}

此代码流式传输我的整个屏幕。 如果我在控制台中执行此操作,我可以流式传输屏幕的一部分:

vlc -I "dummy" screen:// --screen-left=0 --screen-top=0 \
   --screen-width=640 --screen-height=480 \
   --screen-fps=1 \
   --sout '#transcode{vcodec=h264,vb=800,scale=1,\
     acodec=mpga,ab=128,channels=2,\
     samplerate=44100}:http{mux=ts,dst=:7777/}'

我尝试通过修改一行来在代码中完成此操作:

libvlc_vlm_add_broadcast(inst, "mybroad",
                "screen:// :screen-fps=24 :screen-top=0 :screen-left=0 :screen-width=320 :screen-height=240", 
               "#transcode{vcodec=h264,venc=x264, vb=0,scale=0,acodec=mpga,ab=128,channels=2, samplerate=44100}:http{mux=ffmpeg{mux=flv},dst=:7777/}",
                0, NULL, 1, 0);

但这次修改并没有改变什么。

老实说,我想从一台显示器(我有两台显示器)进行流式传输,但我可以计算显示器的边界。


我找到了解决方案。

#include <iostream>
#include <cstdlib>

#include <vlc/vlc.h>


int main(int argc, char**argv)
{
    // the array with parameters
    const char* params[] = {"screen-top=0", 
                            "screen-left=0",
                            "screen-width=640", 
                            "screen-height=480", 
                            "screen-fps=10"}; 
    libvlc_instance_t * inst = libvlc_new(argc, argv);
    libvlc_vlm_add_broadcast(inst, "mybroad",
            "screen://", 
            "#transcode{vcodec=h264,vb=800,scale=1,acodec=mpga,ab=128,channels=2,samplerate=44100}:http{mux=ts,dst=:7777/}",
            5, params, // <= 5 == sizeof(params) == count of parameters
            1, 0);
    libvlc_vlm_play_media(inst, "mybroad");
    std::cout << "ready" << std::endl;
    int i;
    std::cin >> i;
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

libvlc 流屏幕的一部分 的相关文章

随机推荐

  • 将 UUID 与 LINQ to Entities 中的字符串进行比较会引发错误 [重复]

    这个问题在这里已经有答案了 编辑 这不是重复的 建议的 SO 链接希望我打电话ToString 但我正在运行 COUNT 并试图做一个比比较更大的事情ToString 不是正确答案 我正在尝试使用以下方式填充变量IF快捷方式 但当我运行它时
  • SSRS:根据参数值有条件隐藏列 - CSV 导出忽略

    我在 SSRS 2008 中有一个简单的基于表格的报告 有 10 列 每列都有一个相应的参数来确定是否应显示该列 我通过设置在设计模式下右键单击列标题时获得的 列可见性 选项来实现此目的 就我而言 我选择 根据表达式显示或隐藏 将表达式设置
  • Pod Init 没有创建 xcworkspace?

    我启动了一台新 Mac 运行 sudo gem install cocoapods 完成 Pod 初始化 Pod 文件已创建 但没有 xcworkspace 文件 使用 Xcode 9 3 任何帮助表示赞赏 尝试过 卸载 cocoapods
  • 使用 R 中的工具提示绘制县级数据

    我在 www betydb org 上看到了美国县级的交互式分区统计图 我想使用 R 重现类似的地图 我只想要地图和工具提示 不是不同缩放级别的所有图块 或者切换地图的能力 该地图当前创建于ruby 弹出窗口 左下角 查询 MySQL 数据
  • 如何自动更新 MS-Access 2007 应用程序

    我有一个与 MySql 服务器通信的前端 Access 2007 应用程序 我想要一个功能 用户计算机上的应用程序可以检测到网络上有新版本 这并不困难 并将最新版本下载到本地驱动器并启动它 有谁有任何知识或经验如何做到这一点 Thanks
  • 如何在xampp中启用curl? [复制]

    这个问题在这里已经有答案了 如何在xampp中启用curl 我的 PHP twitter 应用程序需要curl 函数 但在 XAMPP 中并未启用它 如何启用它 我没有找到这样做的选择 您必须修改 xampp 文件夹中的 php ini 文
  • 如何在 Verilog 中将长语句分成行

    例如 我有一个很长的声明 display input data x output data x result x input data output data result 如何在 Verilog 中将其变成单语句和多行 您需要分解引用的字
  • 启动一个即使在 IE 中也能正常运行的文件下载?

    我正在寻找有关从 Javascript 启动文件下载的最佳方法的更多想法 启动下载的最佳方式 有很多好的想法 可以总结一下 在 iframe 上设置 src 使用 window location replace 使用带有元刷新标题的页面 使
  • Codeigniter URL 在没有 index.php 的情况下无法工作

    我刚刚建立了一个新网站http www reviewongadgets com 但是URL渲染有问题 当我输入如下 URL 时 它不起作用并给出页面未找到错误http www reviewongadgets com latest mobil
  • C 结构体成员的默认值

    是否可以为某些结构成员设置默认值 我尝试了以下方法 但是会导致语法错误 typedef struct int flag 3 MyStruct Errors gcc o testIt test c test c 7 error expecte
  • 在seaborn中使用Unicode文本

    我想在 Seaborn 中使用 Unicode 文本 Python 2 7 我可以使用 Unicode 文本作为 matplotlib 的图块 例如 import matplotlib pyplot as plt from matplotl
  • 告诉 Puppeteer 打开 Chrome 选项卡而不是窗口

    如果我打开了现有的 Google Chrome 窗口 我想告诉 puppeteer 打开一个新选项卡而不是打开一个新窗口 有没有办法做到这一点 是否有一些选项或标志我可以传递给木偶师来完成此任务 I have const puppeteer
  • 标准表单身份验证 Java servlet

    使用 Java Servlet 进行表单身份验证的标准方法是什么 从现在开始 我自己使用简单的 POST HTML 表单实现了这一点 根据数据库检查发送的参数 如果存在 将 User 对象保存到 HttpSession 中 检查每个 Ser
  • 解析 ANTLR 中的字符串插值

    我正在开发一个用于内部目的的简单字符串操作 DSL 并且我希望该语言能够支持 Ruby 中使用的字符串插值 例如 name Bob msg Hello name print msg prints Hello Bob 我正在尝试在 ANTLR
  • 证明在循环中使用范围运算符不会使用额外的内存

    当前的文档范围运算符 声明它不会消耗内存计数循环 范围运算符对于编写很有用foreach 1 10 循环以及对数组进行切片操作 在当前的实现中 没有创建临时数组当范围运算符用作 foreach 循环中的表达式时 但是当您编写如下内容时 旧版
  • WPF 将 StackPanel 的宽度从 0 动画到自动?

    我正在尝试在 StackPanel 的可见性从宽度 0 变为自动宽度时对其进行动画处理 这是我目前所拥有的
  • 使用 R 创建起点-终点矩阵

    我的数据框由个人和他们在某个时间点居住的城市组成 我想每年生成一个出发地 目的地矩阵 记录从一个城市到另一个城市的移动次数 我想知道 如何自动生成数据集中每年的出发地 目的地表 如何生成相同 5x5 格式的所有表格 5 是我的示例中的城市数
  • 基于 Spring-Boot 模块的集成测试

    我有一个多模块 Spring Boot 项目 我想知道如何设置集成测试来测试 Spring Data JPA 存储库 以下方法因此异常而失败 HV000183 无法加载 javax el E xpressionFactory 检查类路径上是
  • 致命错误 Varien_Autoload 未找到

    今天是个好日子 我使用示例数据安装了 magento 刷新了页面 一切似乎都正常 我的整个商店充满了样本数据 几分钟后我再次刷新 从那以后我不断收到此错误 PHP 致命错误 在第 53 行 var www vhosts shop cyber
  • libvlc 流屏幕的一部分

    我想使用 vlc 库流式传输屏幕的一部分 我写了一个小例子 include