android AV同步详解

本文主要介绍 android 多媒体中,音视频同步问题。

以下是详细说明:

先提及一个背景基础知识: 
Stagefright中,audio的数据输出是通过AudioTrack中的callback来不断驱动AudioPlayer::fillBuffer获取数据
video的数据输出,则是由OMX端在解码完毕后,给awesomeplayer发送消息event,在awesomeplayer的onVideoEvent中进行视频的render。
在render之前进行AV同步工作
具体细节不再赘述。读者可自行参考其他文章。
所以本文实际上重点研究的就是AV同步的处理函数:onVideoEvent

一,既然牵扯到AV同步,肯定涉及到一个时间基准的问题。
AV同步目前有两种同步方法: 
1,视频,音频同步到一个第三方系统时钟  
2,以音频时间戳为基准,视频数据同步到音频时间戳上

两种方法各有优缺点, 
第一种方法中,音频视频不能互相感知,如果有一方出现了问题,一样会造成AV时间不同步。尤其是如果AV中一方有一个长时间的累积误差,这种方法就无能为力了。因为他们不能互相修正。
第二种方法中,必须有音频做基准,对于一些没有音频,只有视频的媒体文件,这种方法就无能为力了。

所以android目前对这两种都采用了:
对于音频,视频都健全的文件,把视频同步到音频上。对于没有音频,只有视频的文件,把视频同步到第三方时钟上,即系统时钟
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值