gpt4 book ai didi

ios - 当 audioqueue 播放从 ffmpeg 解码的 lpcm 时,音频队列的耗时超过了媒体的持续时间

转载 作者:行者123 更新时间:2023-12-03 02:21:30 25 4
gpt4 key购买 nike

使用audioqueue播放ffmpeg解码的lpcm数据时,耗时AudioQueueGetCurrentTime超过媒体的持续时间。但是当用AVFoundation框架解码相同的媒体时,耗时等于媒体的持续时间,所以当ffmpeg在没有解码的情况下读取媒体,然后将压缩的媒体数据发送到audioqueue,耗时也等于媒体的持续时间。 音频流基本描述 设置如下:

    asbd.mSampleRate = 44100;
asbd.mFormatID = kAudioFormatLinearPCM;
asbd.mFormatFlags = kAudioFormatFlagsCanonical;
asbd.mBytesPerPacket = 4;
asbd.mFramesPerPacket = 1;
asbd.mBytesPerFrame = 4;
asbd.mChannelsPerFrame = 2;
asbd.mBitsPerChannel = 16;
asbd.mReserved = 0;

播放从 AVFoundation 解码的数据时, 的设置音频流基本描述 和上面一样。通过我的测试发现 AudioTimeStamp.mSampleTime获得者 AudioQueueGetCurrentTime ffmpeg 和 AVFoundation 不同,ffmpeg 的值大于 AVFoundation。所以我想知道这是怎么发生的,以及如何解决它?
谢谢!

最佳答案

这里的错误是asbd.mSampleRate = 44100并不总是对的,所以有时结果是对的,但其他人是错的。然后你应该设置asbd.mSampleRate = audioCodecCtx->sample_rate ,这总是很好用!

关于ios - 当 audioqueue 播放从 ffmpeg 解码的 lpcm 时,音频队列的耗时超过了媒体的持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11966645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com