iphone avfoundation avplayer cmtime

iphone - objectivoC/CMTime-convierte AVPlayer.duration a milisegundos



avfoundation (3)

CMTime.value y CMTime.timescale son enteros, por lo que, a juzgar por su código, el resultado se redondea y no obtiene una marca de tiempo precisa. Pruebe CMTimeGetSeconds en su lugar.

Estoy creando una aplicación para reproducir un tono de llamada y me gustaría saber la hora actual en milisegundos del tono de llamada reproducido cada vez.

CMTime cTime = player_.currentTime; float currentTime = cTime.value / cTime.timescale;

Ese currentTime aquí obtiene el valor en segundos. ¿Cómo puedo obtener el valor actual de hora exacta pero en milisegundos?


Creo que la respuesta aceptada pierde detalle. Una forma más precisa de obtener milisegundos sería la siguiente:

let seconds : Double = Float64(time.value * 1000) / Float64(time.timescale)

Si conviertes en segundos primero perderías precisión.


Hay una manera de obtener los tiempos actuales en segundos, puede tomar 1000 veces eso y luego tiene sus milisegundos:

Float64 dur = CMTimeGetSeconds([player currentTime]); Float64 durInMiliSec = 1000*dur;

Lamentablemente, tendrá que usarlo como float o Float64 no puede usar ese resultado como CMTime