文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android音视频编码(四)

2022-06-06 14:08

关注

音视频不同步问题

说明
视频录制时,音频流和视频流都是通过设置的pts来确定播放时的具体时间顺序;正常情况下设置好每一帧的pts,即可保证播放的时候声音和图像能同步。具体pts设置见(一),(二)。然而,有时测试会出现,随着编码时间的加长,声音播放正常,而图片播放却越来越快;
分析发现,当camera分辨率设置较大时,可能出现帧率不稳定的情况;如设置的是1920*1080 和 30fps,但实际上平均只有29.9fps,而视频播放的时候是按设置的pts来播放的,仍然按1秒钟30帧来播放,这样就导致了随着时间越来越长,后面的图像播放越来越快。

解决办法
以下方法可供参考:
1.由于音频的编码时间很快,数据采集也比较及时,基本没有延迟,所以,可以以音频的pts作为时间线;
2.在音频编码和视频编码入口处计算好各自的pts,同时记录当前音频和视频的pts;进行编码的时候直接使用此处计算好的pts;
3.在视频编码入口处,比较当前音频和视频的pts,若视频pts小于音频pts(如:小于200ms),则将当前计数的帧数增加一个数值(如:frameIndex += 5),否则正常执行(如:++frameIndex);
如下:

fun encode(data: ByteArray){
    if(mMediaMuxer.getVideoPts() + 200000 < mMediaMuxer.getAudioPts()){
        frameIndex += 5
    }else{
        ++frameIndex
    }
    val pts = frameIndex * 1000000 / mRecorderParams.videoFrameRate
    mMediaMuxer.updateVideoPts(pts)
    mInputTask.writeData(FrameData(data, pts))
}

经过设置后,由于帧率不稳定或视频编码慢导致声音、图像不同步的问题基本可以解决。


作者:dodo128


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯