我已经达到使用https://github.com/nevyn/LBMediaToolkit转换音频的地步。我可以将转换后的CMSampleBuffer保存为.mp4,但在iPhone上播放时,音频声音会失真。
奇怪的是,在QuickTime中播放时音频也听起来失真,但是在通过Web浏览器播放时听起来不错。单击here下载示例文件。
我认为我正在将正确的格式传递给转换器:
let asbd = AudioStreamBasicDescription(
mSampleRate: 44_100,
mFormatID: kAudioFormatMPEG4AAC,
mFormatFlags: UInt32(MPEG4ObjectID.AAC_LC.rawValue),
mBytesPerPacket: 0,
mFramesPerPacket: 1024,
mBytesPerFrame: 0,
mChannelsPerFrame: 2,
mBitsPerChannel: 0,
mReserved: 0)
return LBAudioConverter(convertingTo: asbd)
我不确定音频转换或写入文件是否有问题。这是一个仅包含音频的示例项目的链接:https://github.com/gaperlinski/AudioConversion(按照README.MD中的说明重现该问题)
是否有明显的我做错的事情导致音频听起来失真?
我正在尝试压缩来自AVCaptureSession的输入并将其保存到.mp4文件。我设法转换并保存了视频,但是音频遇到了麻烦。我已经达到了使用https:// ...
第一个样本缓冲区,或者甚至应该在没有数据的样本缓冲区中发送它。
如果我这样做,则音频不会失真,mp4文件容器中只有一个esds原子。