sync是同步还是非同步_音视频是怎么保持同步的?(四)

3e02bc940aa8eb4612a8328adbf6372c.png

今天我们来继续讲音视频是怎么保持同步的。

常用同步策略

前面已经说了,实现音视频同步,在播放时,需要进行选定一个重要参考时钟,读取帧上的时间戳,同时企业根据的参考时钟来动态管理调节播放。它是目前已知的是,时间标记PTS,那么参考时钟一般有三种选择:

将视频进行同步到音频上:就是以音频的播放速度为基准来同步视频。

将音频同步到视频:它根据视频的播放速度对音频进行同步。

外部的视频和音频同步的时钟:选择外部时钟参考,视频和音频播放的快时钟作为标准。

07a662dfd35ab9a18136c6a5f266c5fb.png
音视频是怎么保持同步的?(四)

当播放源比参考系统时钟慢,则加快其播放速度,或者直接丢弃;快了,则延迟可以播放。

这三个都是最基本的策略,考虑到人的敏感度比视频的声音更强,音频调节将带来不吸引人的体验,而音频播放时钟线性增长,它通常是在一个参考音频时钟的时钟,同步视频音频。

调整政策简单地阻止早期或晚期到达延迟或速度高达过程中,有时是不够的。

对于从阶段广播,尤其是TS实时流,由于视频解码依靠第一I帧,和音频可以是实时的输出,这种情况可能出现更先进的音频视频PTS PTS,同步这种情况下,它势必导致更明显的慢速同步。

音视频同步简单示例代码

代码引用ffplay实现,同时添加自己的修改。基准时钟同步到所述样本代码的音频,视频音频:

获取企业当前要显示的video PTS,减去上一帧进行视频PTS,则得出上一帧通过视频应该研究显示的时长delay;

当前视频PTS与当前音频PTS比较,音频和视频的diff之间的间隙的基准时钟;

获取信息同步进行阈值sync_threshold,为一帧通过视频发展差距,范围为10ms-100ms;

差分小于sync_threshold,认为不需要同步;否则,延迟差分值是正确的延迟;正确的

如果不是sync_threshold多,背后的音频和视频,你需要减少延迟,从而使当前帧显示为尽快。

因为这很可能跟上视频解码,再怎么调整延迟是没用的。

如果没有超过sync_threshold,且视频发展快于音频,那么需要不断加大delay,让当前帧延迟数据显示。

47b921156987f4bbcd95976cdc405b9a.png
音视频是怎么保持同步的?(四)

会延迟*2慢慢调整间隙,这是轻轻调整间隙,因为直接延迟diff,会让图片滞后。

如果很长一段时间之前,视频显示器本身,所以直接到位延迟+DIFF步进调节,因为这种情况,然后慢慢调整并没有太大的意义。

考虑到渲染的耗时,还需进行分析调整。frame_timer系统是一个时间显示,frame_timer+对延迟curr_time,接下去的显示时间延迟是必需的当前帧的。

以上就是音视频是怎么保持同步的全部内容啦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245290.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑下面的任务栏怎么取消隐藏_电脑工具栏怎么调到下面

任务栏的隐藏与显示很简单,有时我们在需要时可以灵活的将其隐藏,还原,下面为大家介绍一下电脑工具栏怎么调到下面的方法。电脑工具栏怎么调到下面一、直接使用鼠标拖拽的方式移动“任务栏”用鼠标左键按住任务栏的空白区域不放,拖…

excel怎么启用宏_IT技巧分享51: 解决打开Excel文件提示发现不可读取的内容

在使用过程中难免会碰到一些棘手的问题,比如:Excel打不开,提示为不可读取内容,当遇到这些问题我们改怎么处理呢?经百度一下发现主要原因是因为引用了外部文档数据、指向了外部文档中的宏等等。造成故障的原因&#xff…

JQ 全选后获取选中的值_JQ完全学习版本

获得input标签中name属性名字包含a 的标签对象书写。Function(“input[name * a]”)$("input:disabled")这个选择器的作用Input下隐藏的对象$(":input")和$("input");这两个选择器的区别前者是表单的内容,后者是所有input标签获得一个…

audio h5 src 变了之后_我在叩丁狼学H5

#我在叩丁狼学H5#最近接触到了一些前端框架,像Vue.js,React,发现小程序的框架体系跟它们很像。它们都推崇模块化,组件化,数据与元素绑定。这样没有繁琐的DOM操作,组件之间完全分离,样式和逻辑全…

linux nacos启动_Nacos集群安装配置

上篇文章讲到Nacos从v1.3.2开始,windows系统启动脚本默认改成了集群模式(也就是不带参数"-m standalone"),那么如果双击startup.cmd启动就会失败。这篇文章我们就来讲讲Nacos集群安装。需要安装MySQL安装MySql这里就不讲了,大家找度…

西门子plm_西门子的Teamcenter、TIA Portal、NX MCD是如何结合在一起的

写在面前大家好,我是小智,智能制造之家号主~我一直PLM、MESMOM、SCADA、PLC等提倡融合(理念不一定对哈,大家理性看待,不必喷我),希望每个领域的朋友,在自己努力之余,抬头看看窗外的世界&#xf…

linux games账号,linux for games

linux for games最近对linux 游戏发行版系统产生了兴趣,下面简要记录一些链接:https://itsfoss.com/linux-gaming-distributions/ (9 款游戏系统)https://fedoraproject.org/wiki/Games_Lab (fedora 游戏发行版 wiki)https://thishosting.rocks/best-lin…

jpa 自定义sql if_mybatis仿jpa 使用@createDate @updateDate

最近在使用mybatis的时候发现一个问题,就是好多的时候保存实体的时候,都要set create 和update,这样很麻烦,有没有可能类似jap 使用注解自动生成。jpa 的注解原理也拦截sql ,把sql 里面的参数绑定给修改一下。 了解了原理,我们也就自己可以可…

直线电机原理动画_最新的3D动画演示:同步电机原理及技术,一般人看不懂

据说每台交流电机都使用旋转磁场,这项发明掀起了工业革命。分享一下LearnEngineering最新制作的一个动画,讲解的是同步电机RMF的工作原理和技术发展:同步电动的工作原理是:RMF旋转磁场相互作用。恒速特性是通过恒定磁场和旋转磁场…

l2的最优回归_大白话5分钟带你走进人工智能-第15节L1,L2几何解释和Ridge等回归...

第15节 L1和L2正则几何解释和Ridge,Lasso,Elastic Net回归上一节中我们讲解了L1和L2正则的概念,知道了L1和L2都会使不重要的维度权重下降得多,重要的维度权重下降得少,引入L1正则会使不重要的w趋于0(达到稀疏编码的目的…

linux redis安装报错,Linux安装Redis实现过程及报错解决方案

今天安装redis出现些之前安装不曾出现错误,一并在此做个记录一、安装redis及出现错误首先下载redis,官方下载地址页面:https://redis.io/download我们这里选择稳定版6.0.1版本正常安装步骤如下:[rootlocalhost ~]# yum install gc…

xilinx c语言编程,使用Xilinx SDSoc在Xilinx zcu102开发板上编程HelloWorld

关于Xilinx SDSoc的介绍我就不再复述了,我理解的也不一定准确,可以阅读官方文档了解SDSoc,你可以把它理解为一个集成开发环境 (IDE),通过SDSoc我们能够简单快速的对Xilinx的开发板进行编程,不用像传统的嵌入式编程那样…

python画图小猪佩奇_吊炸天!Python 20秒画出小猪佩奇

原标题:吊炸天!Python 20秒画出小猪佩奇 今年社交平台上的带货女王是谁?范冰冰?杨幂?Angelababy?不,是猪猪女孩小猪佩奇。 小猪佩奇在构图基本是各种曲线,类抛物线、类圆、类椭圆、类二次贝塞尔曲线。因为画图画曲线不是Pytho…

win10c语言错误,win10打开程序提示错误状态0xc0000020的原因和解决方法

win10系统打开程序弹出“c:\xx\xxx.dll没有被指定在windows上运行,或者它包含错误。请尝试使用原始安装介质重新安装程序,或联系你的系统管理员或软件供应商以获取支持。错误状态0xc0000020 ”的提示,这到底是什么情况?这 一般是由…

matlab 向量_Matlab基础入门

感谢大家观看你所做的事情,也行暂时看不到成功,但不要灰心,你并不是没有成长,而是在扎根.前情提要本篇文章将会分多次发放(原因内容太长,导致写的是否微信卡崩了🙃), 目的在于从基础的Matlab的教程开始慢慢的深入. 如果大家看到该文章有些格式上的错误或内容上的错误…

python环境配置opencv_【Python】python2.7 安装配置OpenCV2

原博文 2017-05-23 22:28 − 环境:Ubuntu16.04 anaconda Python2.7 opencv2.4.13 安装opencv后 import cv2 遇到错误信息: No module named cv2 安装opencv时make的过程中会出现文件“cv2.so”,它是连接OpenCV和... 相关推荐 2019-12-04 13:5…

流水灯c语言程序延时失败,用c8051f340做控制流水灯实验,程序会卡死在延时函数中 ,只要在那加延时函数程序就只能跑到那,代码如下...

满意答案lohboon2016.07.31采纳率:52% 等级:7已帮助:1159人#include "reg52.h"#define uint unsigned int#define uchar unsigned charsbit K1 P3^2; //独立按键void Delayms(uint x){ uint i,j; for(ix;i>0;i--) for(j100;…

android自定义view生命周期,android基础之自定义view

一、Custom View1、view的继承关系view继承关系.png2、Android 如何绘制试图层次当activity获取焦点时,它必须提供layout层次的根节点,然后android 系统开始视图的绘制过程。绘制是从layout的根节点开始的,按照从上往下的顺序,父元…

python import如何使用_Python如何import其它.py文件及其函数

​ 如上图所示,我想在test_1.py文件中import我在lstm_1.py中定义的LstmParam和 LstmNetwork。我直接采用的是最简单的引用方法:from lstm_1 import LstmParam, LstmNetwork,但是很明显报错了,不能直接这样引用。因为,编…

艾为数字ic面试题_每日学习:数字后端面试100问(2019全新版)

关注并标星大同学吧每天1次,打卡学习积累1个新知识,增1分职场底气作者称谓:Tao涛个人介绍:摸爬滚打多年的数字后端工程师微信公众号:数字后端IC芯片设计半导体知识分享第29期技能升级,从这里开始最近项目刚…