首页 >> 中医保健

格式开发-音视频同步原理

发布时间:2024年01月18日 12:19

ate)//在ffmpeg中都的示例为pkt.pts= count++ * (Ctx->frame_size * 1000 / Ctx->sample_rate);

有了PTS 后来就可以计算媒体文件的直播总间隔时间与当前进度了。在计算某相片的说明了等待时间先前,必先讲解FFmpeg中都一个载重的等待时间其他部门:等待时间辛(TIME BASE)。

等待时间辛也称之为等待时间辛准,它推选的是每个刻度是多少秒,是一个比起的概念。比方说:影片帧百余人是30FPS,那它的等待时间刻度是{1,30}。相当于1s内划分显现出30个等分,也就是均会1/30秒后说明了相片影片平面图表。实际的如下平面图右平面图:在FFmpeg中都存在这多个有所不同的等待时间辛,互换着影片处理过程的有所不同的期中都(分布于有所不同的结构体中都)。在本文中都采用的是AVStream的等待时间辛,来请示Frame说明了时的等待时间得用(timestamp)。

/** * This is the fundamental unit of time (in seconds) in terms * of which frame timestamps are represented. * */AVRational time_base;

纸片的注释说明AVStream中都的time_base是以秒为其他部门,对此frame说明了的等待时间,其类型为AVRational。 AVRational是一个点数,其回应如下:

/** * rational number numerator/denominator */typedef struct AVRational{ int num; ///< numerator int den; ///< denominator} AVRational;

num为分子,den为分母。PTS为一个uint64_t的整型,其其他部门就是time_base。对此影片阔度的duration也是一个uint64_t,那么采用如下工具就可以计算显现出一个影片流的等待时间阔度:

time(second) = st->duration * _q2d(st->time_base)

st为一个AVStream的表头,_q2d将一个AVRational转换为双准确度小数。比如说的工具也可以想得到影片中都某帧的说明了等待时间

timestamp(second) = pts * _q2d(st->time_base)

想得到了Frame的PTS后,就可以想得到该frame说明了的等待时间得用即当前直播的当下。请特别注意的示例重现了在从packet中都撷取显现出frame后,如何想得到frame的PTS

ret = codec_receive_frame(video->video_ctx, frame);if (ret < 0 && ret != AVERROR_EOF) continue;if ((pts = _frame_get_best_effort_timestamp(frame)) == AV_NOPTS_VALUE) pts = 0;pts *= _q2d(video->stream->time_base);pts = video->synchronize(frame, pts);frame->opaque = &pts;

有了PTS 这个载重的衡幅度标准工具后来,是如何遏制回放或者影片的直播快速快速以远超不知光舒服的观看感受呢?我们以FPS =25 的影片文件为例。它的等待时间辛={1,25}即1s 内所需位平面图25帧缩放。以现在撷取笔记本电脑可靠性而言撷取相片缩放并位平面图显现出来的总等待时间在几ms 之内就可以顺利进行这个兼职。如果不加以遏制这25帧平面图片真正不所需花费1s 的等待时间。那么产生的现像就是瞬间将缩放帧位平面图完了,真正看不清缩放的以下内容,就则会产生有大部分等待时间处于下次状态。

在平面图像领域不知光的区分度有限的,最简单来说就是无法范围高分辨百余人下的缩放,一般而言FPS 极小30,不知光就很难分辨了,低15帧能明显感受到戴尔。为了扫除这个下次范围,可以将这个等待时间平摊给前面的25帧以下内容,每帧直播完后来给它上升一个【休息】等待时间,这样就可以解决直播快速同时又再次显现出现下次的实际情况。上平面图如下:

回放也是比如说的原理。

四、音影片互联实际实现

纸片谈到了互联的三种解决方案,请特别注意以回放计时器为轸考计时器实现音影片互联为例顺利进行分析是如何远超“音影片互联”的。

以回放计时器为轸考动手音画互联,回放的撷取直播的全过程中都忽视是显现出现精神状态直播的不动手处理过程。在直播的全过程中都,所需不断地将影片的直播等待时间得用和回放等待时间得用作更为,如果两者的差值高达了某个反之亦然,则忽视影片直播太快速或者太快速了,所需将影片直播调快速或者调快速甚至丢帧,如果它们的差值在必需的反之亦然范围内,则推选直播显现出现精神状态,不用调整。如下平面图右平面图(平面图片来源于网络)

所需互联的处理过程的实际情况一般而言有两种:

如果影片再次显现出现直播早于回放,那么这种实际情况就所需顺利进行丢帧处理过程将当前未直播的帧全部丢弃直到与回放等待时间得用在必要的反之亦然内。同时要上升直播影片内核的休眠状态等待时间,让它兼职的快速点。上平面图如下: 如果影片直播滞后回放,就所需加快速影片的直播,忽略当前帧,立刻说明了下相片,加速影片追赶。这种加快速的处理过程只不过就是减少影片直播内核的休眠状态等待时间。它的上平面图如下:

再一实现的效果不知影片:

影片加载中都...。

眼睛疲劳怎么恢复比较快
胃酸胃胀胃烧心吃什么药好
男性不育
扭伤吃什么止痛药
重庆做试管婴儿需要多少钱
友情链接