0%

Managing C++ libs with CMake ExternalProject and Git

CMake has a functionality called ExternalProject_add, which can use, to automatically check out a git repository, and build that as part of the normal build process.

Of course, the same functionality would be possible with git submodules, but honestly, I always found this part of git rather cumbersome, and unnecessarily complex, for what I want to do.

Git 子模块

启动外部程序

在 windows 下如何使用 C++ 语言启动外部程序?

函数 system()

使用 CMD.exe 命令行窗口解释输入的字符串命令,引用来自 system, _wsystem

The system function passes command to the command interpreter, which executes the string as an operating-system command.

system uses the COMSPEC and PATH environment variables to locate the command-interpreter file CMD.exe.

阅读全文 »

GNOME 和 MATE 都是桌面环境。

GNOME2 在 2010年9月之后,转向 GNOME3 的开发。

出现分歧,在 2011 年基于 GNOME2 派生出 MATE。

Ubuntu MATE 针对老旧桌面型、笔记型、树莓派等硬件性能等级不高的设备,或喜欢简洁、不用特效桌面环境者。

银河麒麟 V10 在做去 GNOME,去 MATE 化。

UKUI 或称 UbuntuKylin UI,最早是一个基于 Mate 制作的桌面环境。

中标麒麟 V7 在系统信息中展示桌面环境使用 MATE。

阅读全文 »

互联网协议套件

OSI 七层模型和 TCP/IP 四层模型:

  • http、ftp 应用层
  • [表示层]
  • [会话层]
  • tcp/udp 传输层
  • ip、icmp 网络层
  • ethernet/以太网 数据链路层
  • [物理层]
阅读全文 »

合作厂商A的代码,虽然宣称支持跨平台,早期也的确做过大量的平台适配工作。但目前看来,跨平台的工作应该是暂停了,至于后期是否重新拾起来不得而知。

除了客户端是 windows 版本之外,所有的服务(包括设备接入、流媒体服务、流媒体服务调度、存储服务、存储服务调度等等)都是使用 centos7 作为部署环境的。至于是否使用 centos7 作为开发环境,就看各位喜好了,但编译环境肯定还是 centos7 没跑了。

如果使用 centos7 作为编码环境,有两个选择:

  • 自己搭建虚拟机,借由图形界面的 IDE 进行开发,使用 git/svn 等版本控制工具时也更加直观
  • 使用 xshell 等工具远程访问开发服务器,借由 vim 进行开发

后者更具有灵活性,也更方便和同事合作开发,避免同事改动内容后(未提交 svn)手工导出到虚拟机的烦恼,后期如果权限收紧 svn 不再开放外网权限,手工导出源码存在合规问题,即便合规导入导出也是一件很繁琐的事情。但没有图形界面沟通时总是短板(组内同事水平不一)。

先尝试 vim 编码开发,如果学习曲线不够平滑,效率提升困难,后面试验使用图形界面进行开发。

阅读全文 »

Kubernetes 是一个开源的容器编排引擎,用来对容器化应用进行自动化部署、 扩缩和管理。

kubernetes

如何理解 k8s 对象这个概念? 使用 Kubernetes 对象

k8s 可以有多个节点(Node),每个节点可以有多个 POD,pod 是一组(一个或多个)容器。

Kubernetes 通过将容器放入在节点(Node)上运行的 Pod 中来执行你的工作负载。 节点可以是一个虚拟机或者物理机器。

Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。

每个 Pod 一个容器”模型是最常见的 Kubernetes 用例。

阅读全文 »

如何改进上网环境?如何在监控环境下相对舒适地“搬砖”,如何利用虚拟机?

整体方案很简单,将认证工具、监控工具放在虚拟机 Ubuntu 中,网络选择桥接模式,直连园区无线网完成帐号认证工作;新增网卡将网络分享给其他虚拟机。

2021年11月22日更新,Ubuntu 虚拟机已删除 。

知易行难,具体实现过程中,因为缺乏网络相关的知识体系(尤其是路由配置等)花了较多时间,绕了很多弯。

查看 IP 地址

在终端中查看 IP 地址的命令:ip a,在 Debian 10 或 Ubuntu 20 版本中已经没有 ifconfig 命令、iptables 命令。

更多请参考 如何在 Ubuntu 中检查你的 IP 地址

配置生效

最初每次更改之后都是重启系统,保证配置生效。网络不通的原因可能很多,也弄不明白,按照网上的教程操作之后还是失败就难免怀疑配置是否生效。

重启系统很笨重,但又不清楚针对网络配置的刷新(或重启)命令,后来发现图形界面网络配置项是提供了开关按钮的:重启(开关一次)网络配置生效。

阅读全文 »

国标阅读笔记

  • MANSCDP 协议(监控报警联网系统控制描述协议,Monitoringand Alarming Network System Control Description Protocol),在 GB/T 28181-2016 的附录 A 描述
  • MANSRTSP 协议(监控报警联网系统实时流协议,Monitoring and Alarming Network System Real-Time Streaming Protocol),在 GB/T 28181-2016 的附录 B 描述

XML 数据类型

XML Schema 简介

SVAC 音视频编解码协议

《SVAC 安全防范监控数字视音频编解码技术标准》(简称 SVAC,Surveillance Video and Audio Coding)。其国标号是 GB/T 25724-2017,于 2010 年提出 SVAC1.0 标准,2017 年升级为 SVAC2.0 版本,现行标准为 SVAC2.0 标准。

GB28121 中使用的 2010 年的 v1.0 版本 SVAC。

阅读全文 »

音视频领域、流媒体领域涉及的协议,逐步了解。

GB/T 28181-202n 笔记

9.1.1 注册和注销 f) 提到了 NAT 穿透的细节

9.2.2.1 中三方呼叫的概念?

MESSAGE 消息头 Content-type 头域为 Content-type: Application/MANSCDP+xml;

9.8 历史音视频的回放,提到 媒体回放控制命令引用 MANSRTSP 协议

实时音视频点播 & 历史音视频回放,是将所有的历史音视频都存下来了吗?

SIP 协议

SIP 会话发起协议(Session Initiation Protocol,缩写SIP),GB28181-2016 中称为“会话初始协议”

SIP 与许多其它的协议协同工作,仅仅涉及通信会话的信令部分(control message)。SIP 报文内容发送会话描述协议(SDP),SDP 协议描述了会话所使用流媒体细节,如:使用哪个 IP 端口,采用哪种编解码器等等。SIP 的一个典型用途是:SIP “会话”传输一些简单的经过报文的实时传输协议流。RTP 本身才是语音或视频的载体。

阅读全文 »

关键任务:open-webrtc-toolkits

目标:

  1. 搭建环境,能够简单使用上述工具包:客户端 windows sdk 或 js,部署服务端
  2. 既然是 Intel 推出,是否支持低成本的 x86 架构,其他架构呢?跨平台特性?
  3. 过程中是否需要很多知识点或者工具链,是影响任务进度的关键

8/19/21 周五,工作计划:

  1. 了解 JavaScript 的语法,编写 demo
  2. 执行 OWT 的代码实验室的 js client。失败,案例描述和仓库代码不一致,本地服务器能够访问,但按钮功能异常。
阅读全文 »