カスタマイズ - swift4 動画再生




Swift:AVPlayer-URLからmp3ファイルの長さを取得する方法 (2)

次の関数はSwift 3.0で動作し、ターゲットファイルの期間を含むDouble値を返します。

func duration(for resource: String) -> Double {
    let asset = AVURLAsset(url: URL(fileURLWithPath: resource))
    return Double(CMTimeGetSeconds(asset.duration))
}

これは、オーディオファイルのファイルパスのStringからなるresourceパラメータを受け取り、その値をFloat64からDouble変換します。

私は迅速に私の最初のIOSアプリケーションを構築するためのプロセスです、そして、私は質問に行き詰まります:ストリーミング時に音楽ファイルの長さ(期間)を取得する方法?

私はこの問題を解決するために多くの研究をし、また何行かのコードを書いていますが、私のコードは十分ではないようです。

 func prepareAudio() {
    audioLength = CMTimeGetSeconds(self.player.currentItem.asset.duration) 
    playerProgressSlider.maximumValue = CFloat(CMTimeGetSeconds(player.currentItem.duration))
    playerProgressSlider.minimumValue = 0.0
    playerProgressSlider.value = 0.0
    showTotalSurahLength()
} // i prepare for get the duration and apply to UISlider here

func showTotalSurahLength(){
    calculateSurahLength()
    totalLengthOfAudioLabel.text = totalLengthOfAudio
} // get the right total length of audio file


func calculateSurahLength(){
    var hour_ = abs(Int(audioLength/3600))
    var minute_ = abs(Int((audioLength/60) % 60))
    var second_ = abs(Int(audioLength % 60))

    var hour = hour_ > 9 ? "\(hour_)" : "0\(hour_)"
    var minute = minute_ > 9 ? "\(minute_)" : "0\(minute_)"
    var second = second_ > 9 ? "\(second_)" : "0\(second_)"
    totalLengthOfAudio = "\(hour):\(minute):\(second)"
} // I calculate the time and cover it

この問題に悩まされたことのある人は、修正のための提案をください。 私はSwiftがとても新しいですが、それでも私のスキルを向上させることを学びます。

ありがとう、


私はこのstufをiOSで作り、完璧に機能しています。

AVURLAsset* audioAsset = [AVURLAsset URLAssetWithURL:audioUrl options:nil];
CMTime audioDuration = audioAsset.duration;
float audioDurationSeconds = CMTimeGetSeconds(audioDuration);




avplayer