高级篇之ENC编码器多机位帧同步配置详解
高级篇之ENC编码器多机位帧同步配置详解
- 一 帧同步方案多样性
- 1. 配合vMIX导播的帧同步方案
- 3. 配合硬件导播的帧同步方案
- 3. 配合芯象导播的帧同步
- 二 帧同步方案1实现步骤
- 1. 准备设备
- 2. 搭建环境
- 3 配置设备
- 3.1 配置固定机位
- 3.2 配置帧同步转发端
- 3.3 配置vMIX
- 三 效果对比
- 1 不开帧同步效果
- 2 打开帧同步效果
- 3 最后来两张芯象效果
- 四 结束语
老铁们,来了,来了,来了,ENC编码器帧同步方案来了,2023年10月末,ENC编码器再次实现了一个历史性突破,全系产品都将支持多机位场景下的帧同步功能。在多机位拍摄的场景中,帧同步是一个必要的功能。 虽然之前ENC设备也可以借助SRT等协议实现帧同步的效果,但是为了让帧同步功能可以应用到更多场景,在本月的更新中我们实现了任意协议(RTSP/RTMP/SRT/NDI/ONVIF)的编码、解码、串流的帧同步功能。你们可以叫它“全协议帧同步”,哈哈。
前段时间,芯象发布了帧同步功能,我们第一时间做 了MP01设备(无线聚合移动直播编码器)适配,在高级编码参数中,将帧同步设置为”芯象",通过芯象导播软件拉取编码器的流即可开启帧同步。
如果还不知道MP01是什么,请进以下链接熟悉产品(或者直接找我了解):
“https://item.taobao.com/item.htm?spm=a21dvs.23580594.0.0.1d293d0dSSEWCW&ft=t&id=732390864303”

这款产品虽然刚刚上市,但绝对不是一个新产品,为了让产品更加稳定可靠,早已将这个产品投放给一些用户体验,并经过了2年左右的大型活动场景考验(比如马拉松,演讲直播等),期间修复了不少bug。如今终于可以稳定可靠的问世了。
除了MP01, 全系产品这个月底至下月初都将支持帧同步,是不是很期待了,哈哈,上几张方案图,让大家先有个整体概念。
一 帧同步方案多样性
为了让设备的利用率达到最大化,就要适应现实存在的各种直播环境,比如vMIX导播,硬件导播、芯象导播,我相信这种多样性肯定是用户的福音,可以大大降低用户的构建成本。
1. 配合vMIX导播的帧同步方案

3. 配合硬件导播的帧同步方案

3. 配合芯象导播的帧同步

看了上面几张图,我相信大家都有了整体概念,就知道如何购置设备搭建环境了,再加上考虑到大多数用户需要编码器配合vMix或硬件切换台使用,下面我就已第1个方案为例,讲解一下如何配置ENC编码器实现多机位帧同步直播。已经有我们设备的,可以直接通过升级固件就可以了。还没有我们设备的,推荐使用ENC1V3作为帧同步解码端,链接如下:“https://item.taobao.com/item.htm?spm=a21dvs.23580594.0.0.1d293d0dWBRufJ&ft=t&id=727851791291”
由于篇幅有限,这里不对MP01移动机位做配置说明,因为移动机位还需要配置聚合服务器,过程有点复杂,有需要的老铁们可以直接联系我。下面就以两个固定机位做配置讲解。
二 帧同步方案1实现步骤
1. 准备设备
固定机位:两台ENC1(A-ENC1和 B-ENC1)
帧同步转发端:一台ENCSH
一台电脑: vMIX导播
假设:
A-ENC1 的IP 是 192.168.1.11
A-ENC1 的IP 是 192.168.1.15
ENCSH 的IP 是 192.168.1.20
说明: 一台ENCSH或者ENC1V3可以转发4路同步帧,因为这里是两机位,所以一台ENCSH足够了,如果需要更多机位(比如超过4路)可以选择我们最大支持8路的ENC5-V2(性价比最高)等其他型号,也可以使用多台ENCSH叠加来实现(NTP服务器会保证时间的一致性)。
注意:实现帧同步的几台编码器,必须开启NTP,并指向相同的NTP服务器。
2. 搭建环境
哈哈,虽然有搭建环境这一步,由于这是高级篇就不多做讲解了,做过直播的应该都知道,拿个交换机或路由器接几根网线的事情,这里略过。这里以局域网为例,如果是设备放到公网,只需要将地址改为公网地址就可以了。
3 配置设备
由于这里主要讲解的是如何配置帧同步,其他配置就不在做说明,其实配置非常so easy。本文中,我们已SRT协议为例,因为SRT协议地址中可以配置延时,这样可以更好的验证帧同步的效果。
关于SRT的详细配置问题可以参考一下另一篇《小白篇之ENC编码器的SRT协议多平台推流配置》
重要说明:
————固定机位编码端的帧同步用芯象或者简易都可以的,接收转发端的帧同步可以自适应。
————接收转发端的帧同步缓冲时间必须大于整体的网络延时,比如用SRT的latency模拟网络延时的话,该缓冲时间就必须大于latency,本例中采用的就是两条SRT流,一个latency=100,一个latency=800,缓冲时间设置成2000,并且转发端无需解码,可以选择转成RTSP或RTMP都行。
————开帧同步的所有编码器,必须开启NTP,并指向相同的NTP服务器。
3.1 配置固定机位
登陆到其中一台编码器后台,比如A-ENC1,另一台配置重复这个步骤即可。
首先进入【系统设置】,打开NTP同步,如下图所示:

然后打开【编码设置】页,选择帧同步类型,目前类型主要包括“芯象”,“简易”两种类型,这里选择“简易”就可以了。

然后进入【编码设置】的【SRT设置】页,打开对应频道的“开关”,点击保存,比如:

为了验证效果,这里人为将两个编码器的延时调成不一致,另一台B-ENC1如下:

打开后频道的拉流地址就是:
A-ENC1: srt://192.168.1.11:9001?mode=caller&latency=100
B-ENC1: srt://192.168.1.15:9001?mode=caller&latency=800
3.2 配置帧同步转发端
帧同步转发端配置就更简单了,首先和3.1一样先配好NTP同步,而且NTP服务器要一致。然后登陆设备后台,进入【编码设置】页的【网络输入】,填入A-ENC1和B-ENC1的拉流地址,将"缓冲模式"改为"帧同步",并打开“开关”,如下图所示:

注意: 这里做帧同步只做转发,不做编解码,无需打开"视频解码"和"音频解码"。
然后进入【编码设置】页的【SRT设置】,打开"Net1"和"Net2"频道的SRT开关,其他参数不用动,如下图:

根据上图的端口显示,得出帧同步后的拉流地址就是:
A-ENC1: srt://192.168.1.20:9004?mode=caller&latency=50
B-ENC1: srt://192.168.1.20:9005?mode=caller&latency=50
到此,ENC设备的帧同步设置就完成了。
3.3 配置vMIX
vMIX我也是初学者,就不做太详细的讲解,只给出两张拉流配置图吧:
A-ENC1机位的拉流:

B-ENC1机位的拉流:

三 效果对比
1 不开帧同步效果

当不打开帧同步时,同步误差在700毫秒左右,而且随着时间的延长,这个误差可能会更大。
2 打开帧同步效果

当打开帧同步后,同步误差可能会在0-1帧左右,正常来说,50毫秒以内都算正常,看来我们的编码器表现还是很优秀的。
3 最后来两张芯象效果


四 结束语
最后要感谢微赞CEO周总的开放心态,让帧同步尽快在直播业廉价崛起,帧同步最早是TVU的卖点,如今在周总的带领下,各大厂家都支持帧同步了,这样让用户极大的降低了使用帧同步的成本。也希望ENC编码器能在直播行业发光发热。
相关文章:
高级篇之ENC编码器多机位帧同步配置详解
高级篇之ENC编码器多机位帧同步配置详解 一 帧同步方案多样性1. 配合vMIX导播的帧同步方案3. 配合硬件导播的帧同步方案3. 配合芯象导播的帧同步 二 帧同步方案1实现步骤1. 准备设备2. 搭建环境3 配置设备3.1 配置固定机位3.2 配置帧同步转发端3.3 配置vMIX 三 效果对比1 不开帧…...
matlab simulink 四旋翼跟拍无人机仿真
1、内容简介 略 7-可以交流、咨询、答疑 2、内容说明 四旋翼跟拍无人机仿真 四旋翼、无人机 需求分析 背景介绍 无人飞行机器人,是无人驾驶且具有一定智能的空中飞行器。这是一种融合了计算机技术、人工智能技术、传感器技术、自动控制技术、新型材料技术、导航…...
jenkins、ant、selenium、testng搭建自动化测试框架
如果在你的理解中自动化测试就是在eclipse里面讲webdriver的包引入,然后写一些测试脚本,这就是你所说的自动化测试,其实这个还不能算是真正的自动化测试,你见过每次需要运行的时候还需要打开eclipse然后去选择运行文件吗ÿ…...
【阅读和学习代码】VoxelNet
文章目录 将点特征 转换为 voxel 特征稀疏张量 到 稠密张量,反向索引参考博客 将点特征 转换为 voxel 特征 https://github.com/skyhehe123/VoxelNet-pytorch/blob/master/data/kitti.py 【Python】np.unique() 介绍与使用 self.T : # maxiumum numbe…...
【23种设计模式】接口隔离原则
个人主页:金鳞踏雨 个人简介:大家好,我是金鳞,一个初出茅庐的Java小白 目前状况:22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作 我的博客&am…...
【Python机器学习】零基础掌握PartialDependenceDisplay检验、检查
如何更好地理解模型对特定特征的依赖性?如何使用历史数据来预测明天股票市场的走势? 想象一下,作为一名数据分析师,面对海量的数据,如何准确地预测明天股票市场的走势?这是一个复杂且具有挑战性的问题。但别担心,有一种神奇的工具可以帮助解析模型对各种因素(特征)的…...
Jmeter的接口自动化测试
在去年实施了一年的三端(PC、无线M站、无线APP【Android、IOS】)后,今年7月份开始,我们开始进行接口自动化的实施,目前已完成了整个框架的搭建以及接口的持续测试集成。今天做个简单的分享。 在开始自动化投入前&#…...
windows c++获取开机启动项
#include <iostream> #include <Windows.h> #include <string> #define RUN_LOCATION "Software\\Microsoft\\Windows\\CurrentVersion\\Run" int main() { HKEY hKey; LONG result; // 打开注册表键 result = RegOpenKeyExA(HKEY_CU…...
【C++初阶】类和对象——构造函数析构函数拷贝构造函数
个人主页点击直达:小白不是程序媛 C系列专栏:C头疼记 目录 前言 类的6个默认成员函数 构造函数 概念 构造函数的特性 析构函数 概念 析构函数特性 拷贝构造函数 概念 拷贝构造函数特性 总结 前言 上篇文章我们对于C中的类有了初步的认识和…...
Java实现SQL分页
在日常开发需要对数据进行分页,配置如下 <!-- baomidou --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.0</version></dependency> 在控…...
软件测试进阶篇----自动化测试脚本开发
自动化测试脚本开发 一、自动化测试用例开发 1、用例设计需要注意的点 2、设计一条测试用例 二、脚本开发过程中的技术 1、线性脚本开发 2、模块化脚本开发(封装线性代码到方法或者类中。在需要的地方进行调用) 3、关键字驱动开发:selen…...
rust std
目录 一,std基本数据结构 1,std::option 2,std::result 二,std容器 1,vector 三,std算法 1,排序 2,二分 (1)vector二分 (2)…...
SpringMVC(下)
1、拦截器: 1、拦截器的配置: SpringMVC中的拦截器用于拦截控制器方法的执行 SpringMVC中的拦截器需要实现HandlerInterceptor <!--配置拦截器--><mvc:interceptors><!--对所有的请求进行拦截--><!--<bean class"com.songzhishu.m…...
分布式操作系统的必要性及重要性
总有人在各个平台留言或者私信问LAXCUS分布式操作系统的各种问题,尤其是关于分布式操作系统的应用市场、价值、意义之类的问题。我们团队做LAXCUS分布式操作系统,也不是头脑凭空发热,是基于我们之前的大量产品设计、经验逐渐一步步做起来。当…...
【Javascript】定时器
目录 延迟执行 定时执行 清除定时任务 延迟执行 setTimeout(function(){}, 毫秒) console.log(1); console.log(2); console.log(3); setTimeout(function (){console.log(5) },5000) console.log(4);setTimeout(function (){ console.log(5) },5000) 设定了一个任务&…...
基于stm32的ADC读取烟雾报警器的数值
本文想要设计一个设计一个有stm32控制的烟雾报警系统。通过MQ-2烟雾报警器将获取模拟的数值传递给stm32的ADC外设并在串口助手上显示对应的电压值。烟雾报警器浓度越高,他的电压就越高,但是不会超过3.3V。设置一个电压临界值,当传输回来的电压…...
无需更换vue-cli 脚手架 uniapp-搭建项目-H5-低版本安卓IOS兼容问题(白屏)(接口请求异常)
✨求关注~ 💻博客:www.protaos.com I. 简介 A. UniApp项目概述 B. 白屏和接口请求异常问题的背景 II. 白屏问题 A. 问题描述 1、uniapp 打包H5内嵌入APP内、低版本手机系统访问白屏问题 B. 问题根本原因 1、低版本手机系统 自带的webview内核不支持ES6语…...
【IO面试题 四】、介绍一下Java的序列化与反序列化
文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:介绍一下Java的序列化与…...
M1本地部署Stable Diffusion
下载安装 参考博客: 在Mac上部署Stable Diffusion(超详细,AI 绘画入门保姆级教程) 安装需要的依赖库 brew install cmake protobuf rust python3.10 git wget 可能中途会存在下载报错或者下载卡主的问题,需要切国内源 brew进行替换源: …...
java中的内存分配
目录 1.堆内存 2.栈内存 3.常量池 4.寄存器 5.示例 6.总结 1.堆内存 堆用来存放程序中动态生产的数据,如new出来的对象。 通过new方式创建的对象,数组及字符串都有自己的内存地址。 方法调用完毕后,方法中new出来的对象就会变成垃圾…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
【Linux系统】Linux环境变量:系统配置的隐形指挥官
。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...
Leetcode33( 搜索旋转排序数组)
题目表述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...
es6+和css3新增的特性有哪些
一:ECMAScript 新特性(ES6) ES6 (2015) - 革命性更新 1,记住的方法,从一个方法里面用到了哪些技术 1,let /const块级作用域声明2,**默认参数**:函数参数可以设置默认值。3&#x…...
React父子组件通信:Props怎么用?如何从父组件向子组件传递数据?
系列回顾: 在上一篇《React核心概念:State是什么?》中,我们学习了如何使用useState让一个组件拥有自己的内部数据(State),并通过一个计数器案例,实现了组件的自我更新。这很棒&#…...
Easy Excel
Easy Excel 一、依赖引入二、基本使用1. 定义实体类(导入/导出共用)2. 写 Excel3. 读 Excel 三、常用注解说明(完整列表)四、进阶:自定义转换器(Converter) 其它自定义转换器没生效 Easy Excel在…...
