2015-09-08 26 views
5

La proprietà duration di AVPlayer.currentItem restituisce NAN sempre con gli URL audio Twilio. Tuttavia, l'audio sta funzionando bene.Durata AVPlayer è NAN con Twilio

Sono in grado di ottenere la proprietà duration di tutti gli altri URL audio rispetto a Twilio.

Esempio URL per testare questo problema:

http://api.twilio.com/2010-04-01/Accounts/AC1db6911efe574fc890ee332f140f7e8c/Recordings/RE06adfbfd2ad2cfd5d95585ff91cb3b88.mp3 

Qui ci sono i diversi modi che ho provato fuori:

if (avPlayer.currentItem.status.rawValue == AVPlayerStatus.ReadyToPlay.rawValue) { 

    var asset = AVURLAsset(URL: sourceURL, options: nil) 
    var duration: Float64 = CMTimeGetSeconds(asset.duration) 
    println(duration) 
} 


if (avPlayer.currentItem.status.rawValue == AVPlayerStatus.ReadyToPlay.rawValue) { 
    var duration: Float64 = CMTimeGetSeconds(self.avPlayer.currentItem.duration) 
    println(duration) 
} 


var thePlayerItem = self.avPlayer.currentItem 
if thePlayerItem.status.rawValue == AVPlayerStatus.ReadyToPlay.rawValue{ 

    println(CMTimeGetSeconds(thePlayerItem.duration)) 
    println(CMTimeGetSeconds(thePlayerItem.asset.duration)) 
} 

Qualsiasi aiuto su questo è apprezzato.

ho chiesto GET attraverso il browser e restituito tutti i dettagli, tra cui la durata audio <Duration>37</Duration>

GET /2010-04-01/Accounts/ACda6f1.../Recordings/RE557ce644e5ab84fa21cc21112e22c485.xml 

Risposta:

HEADERS 

Access-Control-Allow-Credentials: true 
Access-Control-Allow-Headers: Accept, Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since 
Access-Control-Allow-Methods: GET, POST, DELETE, OPTIONS 
Access-Control-Allow-Origin: * 
Access-Control-Expose-Headers: ETag 
Connection: keep-alive 
Content-Length: 550 
Content-Type: application/xml 
Date: Tue, 08 Sep 2015 06:50:43 GMT 
Etag: b1512f.. 
Last-Modified: Fri, 04 Sep 2015 04:19:20 +0000 
Strict-Transport-Security: max-age=15768000 
X-Powered-By: AT-5000 
X-Shenanigans: none 
BODY 
view raw 
<?xml version='1.0' encoding='UTF-8'?> 
<TwilioResponse> 
    <Recording> 
    <Sid>RE…</Sid> 
    <AccountSid>ACda6f1... </AccountSid> 
    <CallSid>CA3..</CallSid> 
    <Duration>37</Duration> 
    <DateCreated>Fri, 04 Sep 2015 04:19:20 +0000</DateCreated> 
    <ApiVersion>2010-04-01</ApiVersion> 
    <DateUpdated>Fri, 04 Sep 2015 04:19:20 +0000</DateUpdated> 
    <Price/> 
    <Uri>/2010-04-01/Accounts/ACda6f1.../Recordings/RE557ce644e5ab84fa21cc21112e22c485.xml</Uri> 
    </Recording> 
</TwilioResponse> 
+0

Hai trovato la soluzione? stiamo avendo lo stesso problema qui. –

+0

No .. scusa ...., –

risposta

4

Ho avuto lo stesso problema, ma sono stato in grado di ottenere il durata facendo quanto segue:

let timeRange = self.avPlayer.currentItem.loadedTimeRanges[0].CMTimeRangeValue 
let duration = CMTimeGetSeconds(timeRange.duration) 

Spero che questo aiuti!

0

Hey io sono solo farlo e in registrazione da Twilio con estensione mp3 fatto non wokred per me quando ho usato .duration, e quando si utilizza suggerito @ingaloadedTimeRanges[0].rangeValue.duration restituisce momento sbagliato. Ma ho cambiato a twilio path without .mp3 extensio n e inizia a funzionare

if let playerItem = player.currentItem, playerItem.status == AVPlayerItemStatus.readyToPlay { 
    let durationTime = playerItem.duration 
    //playerItem.loadedTimeRanges[0].timeRangeValue.duration 
}