LibSourcey

C++ 高性能网络开发库
授权协议 LGPL
开发语言 C/C++ Objective-C JavaScript HTML/CSS
所属分类 程序开发、 高性能网络开发库
软件类型 开源软件
地区 不详
投 递 者 祁正浩
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

LibSourcey 是跨平台 C++11 模块和类的集合,为开发人员提供了一个快速开发基于 p2p 和媒体流应用程序的高性能网络的库。可以把它看作 libuv 与 FFmpeg,OpenCV 和 WebRTC 特性的高度结合,所有这些都具有 stl(C++标准库)的易用性和可读性。

使用 LibSourcey 一个很好的出发点是 PacketStream,它可用来创建用于管道,处理并输出任意数据分组的动态委托链。分层分组处理器和动态功能的方法使得它能够快速且容易地开发出复杂的数据处理应用程序。

例如,下面的代码将介绍如何捕捉实时摄像头流,将其编码为 H.264,并通过互联网实时广播它:

// Create a PacketStream to pass packets from the
// input device captures => encoder => socket
PacketStream stream;

// Setup the encoder options
av::EncoderOptions options;
options.oformat = av::Format("MP4", "mp4",
    av::VideoCodec("H.264", "libx264", 400, 300, 25, 48000, 128000, "yuv420p"),
    av::AudioCodec("AAC", "libfdk_aac", 2, 44100, 64000, "s16"));

// Create a device manager instance to enumerate system devices
av::DeviceManager devman;
av::Device device;

// Create and attach the default video capture
av::VideoCapture::Ptr video;
if (devman.getDefaultCamera(device)) {
    video.open(device.id, 640, 480, 30);
    video.getEncoderFormat(options.iformat);
    stream.attachSource(video, true);
}

// Create and attach the default audio capture
av::AudioCapture::Ptr audio;
if (devman.getDefaultMicrophone(device)) {
    audio.open(device.id, 2, 44100);
    audio.getEncoderFormat(options.iformat);
    stream.attachSource(audio, true);
}

// Create and attach the multiplex encoder
av::MultiplexPacketEncoder::Ptr encoder(options);
stream.attach(encoder);

// Attach the output net::Socket instance (instantiated elsewhere)
// to broadcast encoded packets over the network
stream.attach(socket);

// Start the stream
// This method call will start the device captures and begin
// pumping encoded media into the output socket
stream.start();
  • ubuntu 系统中,通过apt安装的libssl-dev版本不匹配,需要重新编译ssl. openssl 编译: wget https://www.openssl.org/source/old/1.0.2/openssl-1.0.2u.tar.gz --no-check-certificate tar -xzvf openssl-1.0.2u.tar.gz cd openssl-1.0.2u/

  • Libuv https://github.com/libuv/libuv LibSourcey是基于libuv,集合了第三方用于视频流的开源库,使用C++11。 下载最新 https://dist.libuv.org/dist/   Windows下编译代码 使用visual C++ 生成工具 (https://visualstudio.microsoft.com/zh-hans/visual-c

 相关资料
  • Swoole提供了底层的网络socket服务器实现。普通用户只需要实现协议或基于现有的协议进行二次开发。 底层Driver BlockTCP 阻塞的tcp/udp server, 请求按顺序执行,必须处理完一个请求才能继续处理新的请求。 SelectTCP 使用select做IO复用的异步非阻塞 server,可以同时维持多个TCP连接。select最大只能维持1024个连接,并且性能会随着连接数

  • 我正在研究一个基于代理的流行病模型。这个想法是单个代理根据他们在网络中观察到的情况(基于距离)做出决定。我在每个代理中都有几个功能,可以动态更新受感染接触者的数量,接触者表现出特定行为等。 下面的代码用于计算代理网络中受感染的联系人。 至少还有3个这样的函数可以保持表示代理网络中其他功能的其他代理的计数。现在,当我 有没有一种计算效率更高的方法来跟踪更大人口的网络统计数据?

  • 开发商使用Hyperledger Composer来数字化业务网络。业务网络由网络中的多个参与者访问,其中一些参与者可能负责维护(托管)网络本身,称为网络维护者。 通常,网络的每个维护者会运行几个peer节点(用于崩溃容错),并且Hyperledger Fabric跨peer节点复制分布式账本。 模型 开发人员与业务分析师合作,为业务网络定义领域数据模型。数据模型使用Composer建模语言进行表

  • 一面(1h) 项目相关问题 数据库的隔离级别,你用的哪个? 聚簇索引与非聚簇索引的区别? 聚簇索引底层是二叉树吗?是B+树 为什么用B+树?不用二叉树?树的高度会变高不要哈希表?因为哈希表不支持范围查找 数据库中用到了什么索引? 用什么作为表的主键? 报文从传输层再到物理层每一层的协议(追问) DNS机制 清除dns缓存的命令 怎么确定路由表中该选择哪一条表项? ARP协议是在查路由表后,找到下一

  • 问题内容: 我正在选择一个网络库来实现不能花费任何微秒时间的客户端/服务器系统。它将实现自己的协议来发送和接收消息。我正在寻找一个好的NIO框架,该框架将使我能够轻松开发服务器和客户端,而不必过多担心低层选择器的细节。每个人都向我推荐Netty,但在向团队提出框架之前,我想尝试2或3个其他选择。我不太喜欢Netty的一件事是它如何使用自己的ByteBuf实现和引用计数来处理ByteBuffer。谁

  • 本文向大家介绍Android高级开发之性能优化典范,包括了Android高级开发之性能优化典范的使用技巧和注意事项,需要的朋友参考一下 本章介绍android高级开发中,对于性能方面的处理。主要包括电量,视图,内存三个性能方面的知识点。 1.视图性能 (1)Overdraw简介     Overdraw就是过度绘制,是指在一帧的时间内(16.67ms)像素被绘制了多次,理论上一个像素每次只绘制一次

  • 9.7 一面 60分钟 1.实习项目介绍 2.实习相关问题 3.stl问题 4.c++11 内容 5.浮点数的表示方式 剩下记不得了 算法题: 1.相交链表找交点 2.两个字符串找最长相同连续子串 3.矩阵最长递增路径 反问 #寒武纪##寒武纪校招##C++工程师##C/C++##面经#

  • 准备 测试环境 在以下几种环境下进行测试: Kubernetes集群node节点上通过Cluster IP方式访问 Kubernetes集群内部通过service访问 Kubernetes集群外部通过traefik ingress暴露的地址访问 测试地址 Cluster IP: 10.254.149.31 Service Port:8000 Ingress Host:traefik.sample-