Alby's blog

世上没有巧合,只有巧合的假象。

0%

一、概述

Mediasoup 主要提供了 3 个库和 1 个 demo。

库名 说明
mediasoup 主要包含三部分。一是 worker 可执行程序,由 C++ 实现,是本系列分析的重点;二是 Node 库,由 TypeScript 实现;三是 Rust 库,和 Node 的主要不同在于它没有以进程方式而是以静态库方式使用 mediasoup-worker。
mediasoup-client Web 客户端库。TypeScript 实现。
libmediasoupclient Native 客户端库。C++ 实现。
mediasoup-demo 官方 Demo。
Examples 各种示例。

网络上对 mediasoup 的 Node.js 层——准确说是对官方的 mediasoup-demo 的源码分析比较多,对于 mediasoup-clientmediasoup-worker (之后简 worker) 等的源码详细分析相对较少。本人之前有将 GB28281 集成进 mediasoup 的想法并验证了可行性,以及使用 .Net 重新实现过 Node.js 层(含 mediasoup-client 和 mediasoup-demo),对 worker 的源码进行过比较粗略地浏览。最近基于想要弥补一些比较模糊的认知,并且 mediaoup 本身也在进化,故就再做了一次源码的梳理。

至于 mediasoup 是什么、能做什么、与其他 SFU 相较而言的优缺点、Demo 如何运行、为什么不用单一语言来实现等等讨论不是本系列关注的重点。

阅读全文 »

一、概述

有如下两种情况的 Nginx 端口映射:一是比如将 8001-801010 个端口映射到本机的 18001-1801010HTTP/HTTPS 服务上;二是反过来,比如将 10080,18001-1801011 个端口映射到本机的 80,8001-801011HTTP/HTTPS 服务上。

当然,对于 HTTP 服务,用 iptables 也是能够实现的。但是要做同一个域名下的批量端口的 SSL 反向代理的话,最直接的方式是在 nginx.conf 中写多个 server 配置块。这样会导致 nginx.conf 的内容过多。

如果批量端口如上面描述的那样有规律可循,则可以通过 server_port 变量来简化 nginx.conf

阅读全文 »

一、概述

基于电视节目的特征,包括视觉特征、音频特征、文本特征、压缩域特征等,对新闻节目进行结构化分析,然后采用视频分割技术将连续的视频流分割为具有特定语义的多个小视频,这就是电视新闻拆条。经过拆条后的电视新闻节目,可以用于互动电视、OTT、互联网视频等多种应用场景,满足了新媒体行业对视听节目碎片化的要求。

如果仅有音频数据需对其拆条,就只能主要通过音频特征和通过语音识别出来的文本特征了。

拆条需求是能够拆节目,也能够拆节目里的片段。比如新闻联播和新闻联播里每一条新闻。对应命名为整档拆条片段拆条

阅读全文 »

一、概述

FFmpeg 提供了一种以管道的方式对音视频进行滤镜操作的框架。其也内置了非常多的滤镜,如果这些滤镜还不能满足需求的话也可以自行开发。

本文主要梳理 FFmpeg 滤镜相关的一些基本概念和 API,为之后对具体内置滤镜的分析做准备。

阅读全文 »