5

我知道存在关于同一问题的多个问题,但是在遵循这个建议之后,我遇到了几个问题。

我已经设置好了所有东西,但是每次使用 kMTTimeZero 时都会出现马赫错误。

soundQueue = [AVQueuePlayer queuePlayerWithItems:soundEmotions];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(playerItemDidReachEnd:)
                                                 name:AVPlayerItemDidPlayToEndTimeNotification
                                               object:[soundEmotions lastObject]];

这就是我所做的。

- (void)playerItemDidReachEnd:(NSNotification *)notification {
    // Do stuff here
    NSLog(@"End has been reached.");

    // Set it back to the beginning
    [soundQueue seekToTime:kCMTimeZero];

    //Replay
    [soundQueue play];

}

错误:架构 armv7 的未定义符号:“_kCMTimeZero”,引用自:-[ViewController playerItemDidReachEnd:] in ViewController.o ld:未找到架构 armv7 的符号:错误:链接器命令失败,退出代码为 1(使用 - v 查看调用)

4

2 回答 2

17

kCMTimeZeroCoreMedia.framework中的一个符号,因此您必须将此框架添加到目标“构建阶段”中的“链接二进制与库”部分。

于 2013-03-11T19:21:09.307 回答
0

我正在使用这种方法来观察最后一项,然后seek to kCMTimeZero

 override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {

        if keyPath == "currentItem" {

            print("Next Track...", currentTrackIndex)

            if currentTrackIndex > 0 {
                self.isPlaying = true
            }

            currentTrackIndex += 1
            if currentTrackIndex > playerQueue.items().count {
                currentTrackIndex = 0
                playerQueue.seek(to: kCMTimeZero)
            }
        }
    }

进而

private func observeTrackChanged(of player : AVQueuePlayer) {

        player.addObserver(self, forKeyPath: "currentItem", options: .new, context: nil)
    }
于 2018-03-07T15:48:02.607 回答