2015-09-08 15 views
5

Właściwość AVPlayer.currentItemduration powraca NAN zawsze z Twilio URL-audio. Jednak dźwięk jest odtwarzany poprawnie.AVPlayer Czas jest NAN z Twilio

Jestem w stanie uzyskać właściwość duration wszystkich innych adresów audio niż Twilio.

Próbka url przetestować ten problem:

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

Oto różne sposoby, że próbowałem się:

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)) 
} 

Każda pomoc w tej sprawie jest doceniana.

I zwróciły GET przez przeglądarkę i powrócił wszystkie szczegóły w tym czas trwania dźwięku <Duration>37</Duration>

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

Response:

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

Czy otrzymałeś rozwiązanie? mamy tutaj ten sam problem. –

+0

Nie .. przepraszam .... –

Odpowiedz

4

miałem ten sam problem, ale udało mi się dostać czas trwania, wykonując następujące czynności:

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

Mam nadzieję, że to pomoże!

0

Hej jestem po prostu robi to w rzeczywistości nagranie z Twilio z rozszerzeniem mp3 nie wokred dla mnie, kiedy użyłem .duration oraz podczas używania zasugerował @ingaloadedTimeRanges[0].rangeValue.duration zwraca zły czas. Ale zmieniłem na twilio path without .mp3 extensio n i zaczęło działać

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