2013-02-26 14 views
13

Wie kann ich meiner aktuellen Spielzeit 5 Sekunden hinzufügen?
Eigentlich ist dies mein Code:AVPlayer - Hinzufügen von Sekunden zu CMTime

CMTime currentTime = music.currentTime; 

Ich kann nicht CMTimeGetSeconds() verwenden, weil ich das cmtime Format benötigen.

Vielen Dank für Ihre Antworten ...

EDIT: Wie kann ich eine Variable für cmtime gesetzt? Hier

Antwort

21

ist ein Weg:

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

Perfect !!! Danke :) –

+0

Wenn ich die "+ 5" durch "- 5" ersetze, funktioniert es nicht ... Weißt du, was falsch ist? –

+0

Wie hoch ist die aktuelle Zeit in Sekunden? Vielleicht wird die Zahl negativ? – BlueVoodoo

18

elegante Art und Weise wird mit CMTimeAdd

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

CMTime resultTime = CMTimeAdd(currentTime,timeToAdd); 

//then hopefully 
[music seekToTime:resultTime]; 

auf Ihre edit: Sie cmtime Struktur durch diese Weisen

CMTimeMake 
CMTimeMakeFromDictionary 
CMTimeMakeWithEpoch 
CMTimeMakeWithSeconds 

mehr erstellen @ : https://developer.apple.com/library/mac/#documentation/CoreMedia/Reference/CMTime/Reference/reference.html

+0

'AVPlayer' reagiert möglicherweise nicht auf 'setCurrentTime' –

+0

Senden 'CMTime' zu Parameter des inkompatiblen Typs 'NSTimeInterval' (aka 'Doppel') –

+0

vielleicht sollten Sie [Musik seekToTime: resultTime] – tomasgatial

2

In Swift:

private extension CMTime { 

    func timeWithOffset(offset: NSTimeInterval) -> CMTime { 

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

     return CMTimeMakeWithSeconds(secondsWithOffset, timescale) 

    } 

}