【发布时间】:2012-08-23 14:21:25
【问题描述】:
我能够加入多个 CAF 文件,其中包含编码的 PCM 音频。首先,我从一个 CAF 文件中读取数据格式。
UInt32 size = sizeof(srcFormatDescription);
status = AudioFileGetProperty(srcAudioFile, kAudioFilePropertyDataFormat, &size, &srcFormatDescription);
PCM 数据格式如下所示
[Line 7697] mSampleRate: 44100.000000
[Line 7698] mFormatID: 1819304813d
[Line 7699] mFormatFlags: 12d
[Line 7700] mBytesPerPacket: 2d
[Line 7701] mFramesPerPacket: 1d
[Line 7702] mBytesPerFrame: 2d
[Line 7703] mChannelsPerFrame: 1d
[Line 7704] mBitsPerChannel: 16d
[Line 7705] mReserved: 0d
然后我为目标文件设置数据格式,它将包含所有 CAF。
destFormatDescription = srcFormatDescription;
status = AudioFileCreateWithURL(dest, kAudioFileCAFType, &destFormatDescription, kAudioFileFlags_EraseFile, &destAudioFile);
下一步我从 CAF 读取数据
status = AudioFileReadBytes(srcAudioFile,
FALSE,
currentStartForReading,
&bytesNumberToRead,
buffer);
并将其写入 destAudioFile
status = AudioFileWriteBytes(destAudioFile,
FALSE,
writePosition,
&bytesNumberToWrite,
buffer);
这些步骤在循环中完成。它工作得很好。 但是我有一个大问题,现在我尝试对包含 ALAC 格式数据的 CAF 文件执行相同的步骤。它不起作用。不支持 AudioFileWriteBytes 返回错误操作。
对于 ALAC 数据格式如下所示
[Line 7697] mSampleRate: 44100.000000
[Line 7698] mFormatID: 1634492771d
[Line 7699] mFormatFlags: 1d
[Line 7700] mBytesPerPacket: 0d
[Line 7701] mFramesPerPacket: 4096d
[Line 7702] mBytesPerFrame: 0d
[Line 7703] mChannelsPerFrame: 1d
[Line 7704] mBitsPerChannel: 0d
[Line 7705] mReserved: 0d
有人知道如何将多个 CAF 文件与其中的 Apple Lossless 数据合并吗?
【问题讨论】:
标签: iphone objective-c ios macos audiotoolbox