美文网首页
iOS使用OpenAL播放音视频不同步的问题

iOS使用OpenAL播放音视频不同步的问题

作者: 星星杨 | 来源:发表于2022-08-25 15:25 被阅读0次

概述:
最近在做的项目,涉及用FFmpeg解码视频,在本地APP播放的功能,测试同学反应播放视频音视频不同步,所以就浅浅的记录一下解决过程;

1、分析

音视频不同步主要分为三种情况:

1、拉取源视频音画就不同步
2、解码过程中音频帧跟视频帧的时间戳处理不当导致音画不同步
3、最后一个就是音频播放队列缓存太长,导致不同步

第一点通过第三方软件可以正常播放视频源,所以排除;
第二点之前分析过,通过音视频解码的pts来比较音视频帧的延迟与否,采用的策略是视频帧向音频帧对齐的方式,即保证音频帧流畅输出;
所以排除以上两点问题,就把重点排查的范围确定到第三点上;

2、排查问题

调试追踪发现,queue队列长度确实容易飙升,有时候都能达到一百多,按1秒25帧来算,音频可能会滞后3-4秒,甚至更多 image.png

3、改进措施

控制播放队列长度为10,在把解码得到音频帧加入音频队列之前,先判断当前缓存队列长度是否超过最大程度,如果未超过就可以正常添加,否则解码线程就休眠等待;

    int dataSize = frame->nb_samples * frame->channels * av_get_bytes_per_sample(AVSampleFormat(frame->format));
    std::this_thread::sleep_for(std::chrono::milliseconds(44100/dataSize));
    // 异步渲染
    #warning TODO 卡顿之后就会造成音频延时 -- 已解决
//    BOOL addSuccess = YES;
    char *data = (char *)frame->data[0];
    BOOL ret = NO;
    while (!ret) {
        ret = [self.audioPlayer openAudioFromQueue:data withLength:dataSize];
        if(!ret) {
            /// 休眠一毫秒
            std::this_thread::sleep_for(std::chrono::milliseconds(1));
        }
    }
image.png

以上简单处理,可以解决当前音频延迟严重的问题,只是草草记录一下部分问题点,未做详细说明,如对您有帮助,深感荣幸!!!

相关文章

  • iOS使用OpenAL播放音视频不同步的问题

    概述:最近在做的项目,涉及用FFmpeg解码视频,在本地APP播放的功能,测试同学反应播放视频音视频不同步,所以就...

  • 2020-07-23

    iOS 支持音视频倍速播放 基于使用ffmpeg+AudioUnit+OpenGL的一个视频播放器实现倍速播放功能...

  • 图片资源音视频文件添加header防盗链Referer iOS

    flutter视频播放器 flutter图片资源 iOS 原生OC 音视频 iOS swift 音视频 iOS s...

  • 开发人员常识

    FFMpeg 框架 实现程序中播放音视频的功能,通常是使用iOS SDK 中自带的播放器,如MPMoviePlay...

  • openal

    openAL是模仿openGL的播放音频的接口,底层由声卡驱动提供实现; openAL分为三种设备:Native、...

  • Android音视频编码(四)

    音视频不同步问题 说明:视频录制时,音频流和视频流都是通过设置的pts来确定播放时的具体时间顺序;正常情况下设置好...

  • 使用openAL播放音频流

    上一篇文章写了解码AAC音频流,那么解码后的音频流如何播放呢?下面,我就讲解使用openAL播放音频流。1.同样,...

  • WebRTC音视频同步机制实现分析

    音视频同步事关多媒体产品的最直观用户体验,是音视频媒体数据传输和渲染播放的最基本质量保证。音视频如果不同步,有可能...

  • WebRTC音视频同步机制实现分析(转)

    音视频同步事关多媒体产品的最直观用户体验,是音视频媒体数据传输和渲染播放的最基本质量保证。音视频如果不同步,有可能...

  • 【iOS】AVPlayer 播放音视频

    1、常见的音视频播放器 iOS开发中不可避免地会遇到音视频播放方面的需求。 常用的音频播放器有 AVAudioPl...

网友评论

      本文标题:iOS使用OpenAL播放音视频不同步的问题

      本文链接:https://www.haomeiwen.com/subject/hnwggrtx.html