ffmpeg에서 오디오 큐를 사용하여 디코딩 된 lpcm 데이터를 재생할 때 경과 시간이 AudioQueueGetCurrentTime
인 경우 미디어 지속 시간을 초과합니다. 그러나 AVFoundation 프레임 워크를 사용하여 동일한 미디어를 디코딩 할 때 경과 된 시간은 미디어의 지속 시간과 동일하므로 디코딩되지 않은 ffmpeg로 미디어를 읽은 다음 압축 된 미디어 데이터를 오디오 대기열로 보내면 경과 시간도 미디어의 지속 시간과 같습니다. 다음과 같은 AudioStreamBasicDescription 세트 :오디오 큐 재생 lpcm이 ffmpeg에서 디코딩 된 경우 오디오 대기열의 경과 시간이 미디어의 내구성을 초과 함
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에서 디코딩 된 데이터와 재생 AudioStreamBasicDescription의 설정은 상기와 동일하다. 내 검사에 의해 AudioTimeStamp.mSampleTime
이 AudioQueueGetCurrentTime
에 의해 발견 된 것은 ffmpeg와 AVFoundation간에 다른 것으로 밝혀졌으며, ffmpeg의 값은 AVFoundation보다 큽니다. 그래서 나는 어떻게 이런 일이 일어나고 그것을 고치는 지 알고 싶다. 감사합니다.