Я пытаюсь прочитать продолжительность локально сохраненного аудиофайла, используя следующий код:
#import <Foundation/Foundation.h>
#import <CoreMedia/CoreMedia.h>
#import <AVFoundation/AVFoundation.h>
AVPlayer *player = [AVPlayer playerWithURL: urlForLocalAudioFile];
// busy wait - I know, not elegant, please ignore
int timeout = 0;
while (([player status] == AVPlayerStatusUnknown
|| [[player currentItem] status] == AVPlayerItemStatusUnknown)
&& timeout < 100) {
[NSThread sleepForTimeInterval: 0.1];
timeout++;
}
// make sure we have the right status
if ([[player currentItem] status] == AVPlayerItemStatusReadyToPlay) {
CMTime cmTime = [[player currentItem] duration];
if (CMTIME_IS_INDEFINITE(cmTime)) {
NSLog(@"Duration is kCMTimeIndefinite");
} else {
NSLog(@"Time: %d", CMTimeGetSeconds(cmTime));
}
} else {
NSLog(@"Item not ready to play");
}
Код не выполняется в главном потоке AppKit, и он использовалработать под macOS 10.13.x и ранее.Теперь с 10.14.0 он всегда сообщает "Duration is kCMTimeIndefinite"
.Даже после того, как я начал проигрывать файл.
Может кто-нибудь, пожалуйста:
- подтвердить / опровергнуть это ошибка в macOS 10.14.0
- предложить обходной путь
Спасибо.