关于AwesomePlayer中音视频不同步的问题

becomedaniu 2012-11-01 08:47:21
每次点击播放或者resume时,总要卡一下然后正常播放,有时候卡的时间比较长。打印信息显示点击播放后video数据来的比音频慢所以要seek跳过到后面,达到同步,这造成了卡顿。有的视频甚至卡到将近1分。请问各位有什么解决方法吗。很奇怪,音频时间戳应该是没错的。怎么视频会滞后这么久。看到有人说视频的播放是由音频驱动的,感觉不对,视频是根据音频同步的,但是驱动是event驱动。不知该怎么解决,调试,大神帮忙,小弟谢过。
...全文
466 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yan8790511 2014-08-08
  • 打赏
  • 举报
回复
当初求种像条狗,如今撸完嫌人丑。
chaooooooo 2014-02-26
  • 打赏
  • 举报
回复
找到结果还不如别回
后坡 2014-02-12
  • 打赏
  • 举报
回复
找到原因也不说,以后谁来回答你的问题,建议csdn搞个黑名单。。。
xiaofengcanyue2013 2013-06-15
  • 打赏
  • 举报
回复
最鄙视这种人,有问题的时候就低声下气的求人,让别人帮你找答案,自己找到了就拍拍屁股走人,也不说一下原因,自私
CuTea 2013-01-15
  • 打赏
  • 举报
回复
引用 10 楼 becomedaniu 的回复:
问题已找到,结贴
到底什么原因,不能分享一下吗?
becomedaniu 2012-11-14
  • 打赏
  • 举报
回复
问题已找到,结贴
becomedaniu 2012-11-05
  • 打赏
  • 举报
回复
顶一下吧谁知道啊。
becomedaniu 2012-11-04
  • 打赏
  • 举报
回复
引用 7 楼 ameyume 的回复:
你看看AudioPlayer::start中DEFAULT_AUDIOSINK_BUFFERCOUNT的值是多少,有没有修改过,如果有就改小点试试。
好的,我试试吧。奇怪的是我把500ms提高到3s,还是太晚,只要我提高多少,视频总是来得比这个阈值要更晚,服了,好像事前知道我要改似的
ameyume 2012-11-02
  • 打赏
  • 举报
回复
音频推迟会导致声音不正常,是不是音频seek时读的太多了?把audio buffer改小些呢?
becomedaniu 2012-11-02
  • 打赏
  • 举报
回复
我现在想有什么办法来使音频推迟一点等等视频。
ameyume 2012-11-02
  • 打赏
  • 举报
回复
你看看AudioPlayer::start中DEFAULT_AUDIOSINK_BUFFERCOUNT的值是多少,有没有修改过,如果有就改小点试试。
becomedaniu 2012-11-02
  • 打赏
  • 举报
回复
可能是吧,您说的audiobuffer是什么。在哪里啊[Quote=引用 5 楼 的回复:]
音频推迟会导致声音不正常,是不是音频seek时读的太多了?把audio buffer改小些呢?
[/Quote]
becomedaniu 2012-11-01
  • 打赏
  • 举报
回复
是的,确实是默认400毫秒会舍去,其实舍去也还可以吧,关键是舍去要seek,需要时间,就卡在那了导致体验很差。但是我现在奇怪的是对同一码流,有时候不超过400,一切正常,有时候却超过,所以我感觉不是原视频时间戳的问题。我实现的是一种新功能,对于别的格式的视频文件都不会卡。其实如果跳过的时间短的话也凑合,关键是我发现有的码流卡的时间很长,所以特纠结。难道要实现自己的同步机制吗,天啊,
[Quote=引用 1 楼 的回复:]
这个问题还没有遇到好的解决办法。
原生代码是依audio track的时间戳为准,video track去跟audio track的时间戳进行比较。
如果落后一定的时间(默认是40毫秒)就会丢弃视频数据,然后在加上一个时间差,去取下一个video track.

由于视频文件中audio和video track的时间戳不一定都一致,所以就会导致总会有不同步的情况发生。
[/Quote]
becomedaniu 2012-11-01
  • 打赏
  • 举报
回复
是的,确实是默认400毫秒会舍去,其实舍去也还可以吧,关键是舍去要seek,需要时间,就卡在那了导致体验很差。但是我现在奇怪的是对同一码流,有时候不超过400,一切正常,有时候却超过,所以我感觉不是原视频时间戳的问题。我实现的是一种新功能,对于别的格式的视频文件都不会卡。其实如果跳过的时间短的话也凑合,关键是我发现有的码流卡的时间很长,所以特纠结。难道要实现自己的同步机制吗,天啊,
Quote=引用 1 楼 的回复:]
这个问题还没有遇到好的解决办法。
原生代码是依audio track的时间戳为准,video track去跟audio track的时间戳进行比较。
如果落后一定的时间(默认是40毫秒)就会丢弃视频数据,然后在加上一个时间差,去取下一个video track.

由于视频文件中audio和video track的时间戳不一定都一致,所以就会导致总会有不同步的情况发生。
[/Quote]
ameyume 2012-11-01
  • 打赏
  • 举报
回复
这个问题还没有遇到好的解决办法。
原生代码是依audio track的时间戳为准,video track去跟audio track的时间戳进行比较。
如果落后一定的时间(默认是40毫秒)就会丢弃视频数据,然后在加上一个时间差,去取下一个video track.

由于视频文件中audio和video track的时间戳不一定都一致,所以就会导致总会有不同步的情况发生。

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧