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

解决方案 »

  1.   

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

  2.   

    是的,确实是默认400毫秒会舍去,其实舍去也还可以吧,关键是舍去要seek,需要时间,就卡在那了导致体验很差。但是我现在奇怪的是对同一码流,有时候不超过400,一切正常,有时候却超过,所以我感觉不是原视频时间戳的问题。我实现的是一种新功能,对于别的格式的视频文件都不会卡。其实如果跳过的时间短的话也凑合,关键是我发现有的码流卡的时间很长,所以特纠结。难道要实现自己的同步机制吗,天啊,
      

  3.   

    音频推迟会导致声音不正常,是不是音频seek时读的太多了?把audio buffer改小些呢?
      

  4.   

    可能是吧,您说的audiobuffer是什么。在哪里啊
      

  5.   

    你看看AudioPlayer::start中DEFAULT_AUDIOSINK_BUFFERCOUNT的值是多少,有没有修改过,如果有就改小点试试。
      

  6.   

    好的,我试试吧。奇怪的是我把500ms提高到3s,还是太晚,只要我提高多少,视频总是来得比这个阈值要更晚,服了,好像事前知道我要改似的
      

  7.   

    找到原因也不说,以后谁来回答你的问题,建议csdn搞个黑名单