七、FFmpeg把视频流同步到音频流

本文详细介绍了如何使用FFmpeg进行音视频同步,包括PTS和DTS的作用、视频帧显示时间的计算以及音频时钟的概念。通过音频时钟和PTS调整视频帧的显示延迟,实现视频同步到音频,确保播放流畅。
摘要由CSDN通过智能技术生成

1、如何同步视频

直到现在,我们的视频播放器还几乎无法正常工作,虽然它能播放视频,也能播放声音,但是声音和视频还没同步。那么现在我们要怎么做呢?

2、PTS和DTS的作用

音频流和视频流信息里面,都有一些信息用于表明应该以多快速度和什么时间来播放它们。音频流有采样率,视频流有帧率。但是如果只是简单的通过数帧和乘以帧率的方式来同步视频,那么同步很可能会出问题。为了可以实现同步,在流中的数据包中有解码时间戳(DTS)和显示时间戳(PTS)。要理解这两个参数的作用,得先了解电影的存储方式。像MPEG等格式,使用被称为B帧(B代表“bidrectional”)的方式。另外两种帧被称为I帧和P帧(I表示"intra",P表示“predicted”)。I帧包含了一帧指定的完整图像,P帧依赖于前面的I帧或者P帧,且使用比较或者差分的方式来编码。B帧与P帧有点类似,但是它是依赖于前面和后面的帧的信息。这也就解释了为什么在调用avcodec_decode_video的时候可能得不到一帧完整的图像。

假设我们有个视频,帧序列为:I B B P,现在要在显示B帧之前知道P帧中的信息。所以这个帧序列的存储方式可能是这样的:IPBB。从这里就可以看出解码时间戳和时间戳的作用了,解码时间戳决定什么时候解码&

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Storm-Shadow

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值