
由于视频播放器中音频和视频是分别播放和渲染的同步播放视频软件,就会发生声音和场景不同步的现象。为了使同一时刻声音和场景的一致性同步播放视频软件,我们就应该音视频同步来推动,这就是音视频同步。
音频播放的时长是PCM数据决定的,根据数据大小和采样率、通道数和位深度就能计算出播放的时长。只要采样率、通道数、位深度不变,扬声器播放同一段PCM数据的时间就是固定不变的。

视频似乎没有播放时长的概念,只有相邻视频场景帧直接的时间间隔,调整时间间隔能够改变视频场景的渲染速度,来推动视频的快慢控制。
由于他们对声音更脆弱,视频场景的一会儿快一会儿慢是发觉不起来的。而

声音的节奏差异是很容易察觉的。所以我们此处运用第一种方式来同步音视频。
PTS即显示时间戳,这个时间戳用来告诉播放器该在什么时候显示这一帧的数据。

time_base即时间度量单位(时间基),可以类比:米、千克这样单位。
PTS = avFrame->pts * av_q2d(avStream->time_base);

视频快了就休眠久点,视频慢了就休眠少点,来超过同步。
class JfVideo {
public:
...
JfAudio *audio;
...
public:
...
};
初始化时数组
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/bofangqi/article-123473-1.html
真实
喜欢哈哈
你一直都很棒