web-dev-qa-db-ja.com

AVPlayer-CMTimeに秒を追加

現在の再生時間に5秒を追加するにはどうすればよいですか?
実際、これは私のコードです:

CMTime currentTime = music.currentTime;

CMTime形式が必要なため、CMTimeGetSeconds()を使用できません。

ご回答ありがとうございます...

編集:CMTimeの変数を設定するにはどうすればよいですか?

16
Lorenz Wöhr

これが1つの方法です:

CMTimeMakeWithSeconds(CMTimeGetSeconds(music.currentTime) + 5, music.currentTime.timescale);
26
BlueVoodoo

エレガントな方法はCMTimeAddを使用することです

CMTime currentTime = music.currentTime;
CMTime timeToAdd   = CMTimeMakeWithSeconds(5,1);

CMTime resultTime  = CMTimeAdd(currentTime,timeToAdd);

//then hopefully 
[music seekToTime:resultTime];

あなたの編集に:あなたはこれらの方法でCMTime構造体を作成することができます

CMTimeMake
CMTimeMakeFromDictionary
CMTimeMakeWithEpoch
CMTimeMakeWithSeconds

詳細@: https://developer.Apple.com/library/mac/#documentation/CoreMedia/Reference/CMTime/Reference/reference.html

22
tomasgatial

Swiftの場合:

private extension CMTime {

    func timeWithOffset(offset: NSTimeInterval) -> CMTime {

        let seconds = CMTimeGetSeconds(self)
        let secondsWithOffset = seconds + offset

        return CMTimeMakeWithSeconds(secondsWithOffset, timescale)

    }

}
4

Swift 4、カスタム演算子を使用:

extension CMTime {
    static func + (lhs: CMTime, rhs: TimeInterval) -> CMTime {
        return CMTime(seconds: lhs.seconds + rhs,
                      preferredTimescale: lhs.timescale)
    }

    static func += (lhs: inout CMTime, rhs: TimeInterval) {
        lhs = CMTime(seconds: lhs.seconds + rhs,
                      preferredTimescale: lhs.timescale)
    }

}
1
idrougge