AVAssetReaderとAVAssetReaderTrackOutputを使用してiOSのiPodライブラリからオーディオアセットを読み取っています。ただし、データを読み取ってチャンクを元に戻すと、ファイルは完全に同じではありません。数kBが欠落しているため、オーディオファイルは再生されません。
これが私がオーディオデータを抽出するために使用するコードです
// Copy next audio samples
CMSampleBufferRef buffer = [[reader_.outputs objectAtIndex:0] copyNextSampleBuffer];
// Extract bytes from buffer
CMBlockBufferRef dataBuffer = CMSampleBufferGetDataBuffer(buffer);
size_t bufLen = CMBlockBufferGetDataLength(dataBuffer);
UInt8 buf[bufLen];
CMBlockBufferCopyDataBytes(dataBuffer, 0, bufLen, buf);
// Pass data to delegate
if ([delegate respondsToSelector:@selector(assetStream:hasDataAvailable:)]) {
[delegate assetStream:self hasDataAvailable:[NSData dataWithBytes:buf length:bufLen]];
}
// Invalidate buffer
CMSampleBufferInvalidate(buffer);
私はここで何が間違っているのですか?