gpt4 book ai didi

objective-c - AVAssetReader 不读取整个文件?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:47:13 26 4
gpt4 key购买 nike

我正在使用 AVAssetReader 和 AVAssetReaderTrackOutput 从 iOS 上的 iPod 库中读取音频 Assets 。但是,当我读取数据并将 block 放回原处时,文件并不完全相同。缺少几 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);

我在这里做错了什么?

最佳答案

是的,我猜对了。 copyNextSampleBuffer 确实省略了 AAC header ,因此媒体播放器 API 无法处理该文件。

您可以使用其他方法复制流描述。

关于objective-c - AVAssetReader 不读取整个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4071409/

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