当前位置: 首页 > news >正文

高级篇之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-ENC1B-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,并且转发端无需解码,可以选择转成RTSPRTMP都行。
————开帧同步的所有编码器,必须开启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-ENC1B-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然后去选择运行文件吗&#xff…...

【阅读和学习代码】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++初阶】类和对象——构造函数析构函数拷贝构造函数

个人主页点击直达&#xff1a;小白不是程序媛 C系列专栏&#xff1a;C头疼记 目录 前言 类的6个默认成员函数 构造函数 概念 构造函数的特性 析构函数 概念 析构函数特性 拷贝构造函数 概念 拷贝构造函数特性 总结 前言 上篇文章我们对于C中的类有了初步的认识和…...

Java实现SQL分页

在日常开发需要对数据进行分页&#xff0c;配置如下 <!-- baomidou --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.0</version></dependency> 在控…...

软件测试进阶篇----自动化测试脚本开发

自动化测试脚本开发 一、自动化测试用例开发 1、用例设计需要注意的点 2、设计一条测试用例 二、脚本开发过程中的技术 1、线性脚本开发 2、模块化脚本开发&#xff08;封装线性代码到方法或者类中。在需要的地方进行调用&#xff09; 3、关键字驱动开发&#xff1a;selen…...

rust std

目录 一&#xff0c;std基本数据结构 1&#xff0c;std::option 2&#xff0c;std::result 二&#xff0c;std容器 1&#xff0c;vector 三&#xff0c;std算法 1&#xff0c;排序 2&#xff0c;二分 &#xff08;1&#xff09;vector二分 &#xff08;2&#xff09;…...

SpringMVC(下)

1、拦截器&#xff1a; 1、拦截器的配置: SpringMVC中的拦截器用于拦截控制器方法的执行 SpringMVC中的拦截器需要实现HandlerInterceptor <!--配置拦截器--><mvc:interceptors><!--对所有的请求进行拦截--><!--<bean class"com.songzhishu.m…...

分布式操作系统的必要性及重要性

总有人在各个平台留言或者私信问LAXCUS分布式操作系统的各种问题&#xff0c;尤其是关于分布式操作系统的应用市场、价值、意义之类的问题。我们团队做LAXCUS分布式操作系统&#xff0c;也不是头脑凭空发热&#xff0c;是基于我们之前的大量产品设计、经验逐渐一步步做起来。当…...

【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外设并在串口助手上显示对应的电压值。烟雾报警器浓度越高&#xff0c;他的电压就越高&#xff0c;但是不会超过3.3V。设置一个电压临界值&#xff0c;当传输回来的电压…...

无需更换vue-cli 脚手架 uniapp-搭建项目-H5-低版本安卓IOS兼容问题(白屏)(接口请求异常)

✨求关注~ &#x1f4bb;博客&#xff1a;www.protaos.com I. 简介 A. UniApp项目概述 B. 白屏和接口请求异常问题的背景 II. 白屏问题 A. 问题描述 1、uniapp 打包H5内嵌入APP内、低版本手机系统访问白屏问题 B. 问题根本原因 1、低版本手机系统 自带的webview内核不支持ES6语…...

【IO面试题 四】、介绍一下Java的序列化与反序列化

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;介绍一下Java的序列化与…...

M1本地部署Stable Diffusion

下载安装 参考博客: 在Mac上部署Stable Diffusion&#xff08;超详细&#xff0c;AI 绘画入门保姆级教程&#xff09; 安装需要的依赖库 brew install cmake protobuf rust python3.10 git wget 可能中途会存在下载报错或者下载卡主的问题,需要切国内源 brew进行替换源: …...

java中的内存分配

目录 1.堆内存 2.栈内存 3.常量池 4.寄存器 5.示例 6.总结 1.堆内存 堆用来存放程序中动态生产的数据&#xff0c;如new出来的对象。 通过new方式创建的对象&#xff0c;数组及字符串都有自己的内存地址。 方法调用完毕后&#xff0c;方法中new出来的对象就会变成垃圾…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...