高级篇之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出来的对象就会变成垃圾…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...

基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...
如何通过git命令查看项目连接的仓库地址?
要通过 Git 命令查看项目连接的仓库地址,您可以使用以下几种方法: 1. 查看所有远程仓库地址 使用 git remote -v 命令,它会显示项目中配置的所有远程仓库及其对应的 URL: git remote -v输出示例: origin https://…...