gpt4 book ai didi

iphone - 如何跟踪 AVAssetWriter 的写入进度?

转载 作者:太空狗 更新时间:2023-10-30 03:30:51 26 4
gpt4 key购买 nike

如何计算 AVAssetWriter 进程的进度?所以如果我有类似的东西:

[assetWriterInput requestMediaDataWhenReadyOnQueue:queue usingBlock:^{
while (1){
if ([assetWriterInput isReadyForMoreMediaData]) {
CMSampleBufferRef sampleBuffer = [audioMixOutput copyNextSampleBuffer];
if (sampleBuffer) {
[assetWriterInput appendSampleBuffer:sampleBuffer];
CFRelease(sampleBuffer);
} else {
[assetWriterInput markAsFinished];
break;
}
}
}
}];

我可以在循环中拉取(或轮询)什么来计算我已经完成了多少 x of y?

谢谢。

最佳答案

样本缓冲区上有几个时间戳。您可以通过调用以下方式获取演示时间戳:

CMTime presTime = CMSampleBufferGetPresentationTimeStamp( sampleBuffer );

然后您可以使用它来确定您在输入缓冲区的源中有多远。 presTime/duration 应该给你一个 0.0 到 1.0 的值,代表大概的进度。如果您需要更精确,您可以尝试使用 CMSampleBufferGetDuration() 将样本缓冲区中样本的持续时间考虑在内。

如果演示时间不适合您,请查看标题附近的其他时间戳。

关于iphone - 如何跟踪 AVAssetWriter 的写入进度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4028636/

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