2015-09-08 5 views
5

duration свойство AVPlayer.currentItem возвращается NAN всегда с Twilio аудио URLs. Однако звук воспроизводится нормально.AVPlayer Продолжительность NAN с Twilio

Я могу получить свойство duration всех других аудио-адресов, кроме Twilio.

Образец URL, чтобы проверить этот вопрос:

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

Вот различные способы, которые я опробованы:

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

Любая помощь на это ценится.

Я просил GET через браузер, и он вернул все детали, включая аудио длительности <Duration>37</Duration>

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

Ответ:

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

Вы получили решение? здесь у нас такая же проблема. –

+0

Нет .. извините ...., –

ответ

4

У меня была та же проблема, но я был в состоянии получить продолжительностью:

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

Надеюсь, это поможет!

0

Эй, я просто делаю это и в самом деле записи из Twilio с mp3 расширением не wokred для меня, когда я использовал .duration, а также при использовании предложил @ingaloadedTimeRanges[0].rangeValue.duration возвращает неправильное время. Но я изменился на twilio path without .mp3 extensio n, и он начал работать

if let playerItem = player.currentItem, playerItem.status == AVPlayerItemStatus.readyToPlay { 
    let durationTime = playerItem.duration 
    //playerItem.loadedTimeRanges[0].timeRangeValue.duration 
} 
Смежные вопросы