Подтвердить что ты не робот

Как получить текущее время воспроизведения и общее время воспроизведения в AVPlayer?

Возможно ли получить время воспроизведения и общее время воспроизведения в AVPlayer? Если да, как я могу это сделать?

4b9b3361

Ответ 1

Вы можете получить доступ к текущему воспроизведенному элементу с помощью свойства currentItem:

AVPlayerItem *currentItem = yourAVPlayer.currentItem;

Затем вы можете легко получить запрошенные значения времени

CMTime duration = currentItem.duration; //total time
CMTime currentTime = currentItem.currentTime; //playing time

Ответ 2

_audioPlayer = [self playerWithAudio:_audio];
_observer =
[_audioPlayer addPeriodicTimeObserverForInterval:CMTimeMake(1, 2)
                                           queue:dispatch_get_main_queue()
                                      usingBlock:^(CMTime time)
                                      {
                                          _progress = CMTimeGetSeconds(time);
                                      }];

Ответ 3

С Swift 2.0 используйте это:

let currentPlayerItem = AVPlayer.currentItem
let duration = currentPlayerItem?.asset.duration
var currentTime = AVPlayer.currentTime()

Ответ 4

     AVPlayerItem *currentItem = player.currentItem;
     NSTimeInterval currentTime = CMTimeGetSeconds(currentItem.currentTime);
     NSLog(@" Capturing Time :%f ",currentTime);

Ответ 5

Swift 3

let currentTime:Double = player.currentItem.currentTime().seconds

Вы можете получить секунды своего текущего времени, обратившись к свойству seconds currentTime(). Это вернет значение Double, которое представляет секунды. Затем вы можете использовать это значение для создания читаемого времени для представления вашему пользователю.

Сначала включите метод возврата переменных времени для H:mm:ss, которые вы покажете пользователю:

func getHoursMinutesSecondsFrom(seconds: Double) -> (hours: Int, minutes: Int, seconds: Int) {
    let secs = Int(seconds)
    let hours = secs / 3600
    let minutes = (secs % 3600) / 60
    let seconds = (secs % 3600) % 60
    return (hours, minutes, seconds)
}

Далее, метод, который преобразует значения, полученные вами выше, в читаемую строку:

func formatTimeFor(seconds: Double) -> String {
    let result = getHoursMinutesSecondsFrom(seconds: seconds)
    let hoursString = "\(result.hours)"
    var minutesString = "\(result.minutes)"
    if minutesString.characters.count == 1 {
        minutesString = "0\(result.minutes)"
    }
    var secondsString = "\(result.seconds)"
    if secondsString.characters.count == 1 {
        secondsString = "0\(result.seconds)"
    }
    var time = "\(hoursString):"
    if result.hours >= 1 {
        time.append("\(minutesString):\(secondsString)")
    }
    else {
        time = "\(minutesString):\(secondsString)"
    }
    return time
}

Теперь обновите пользовательский интерфейс с помощью предыдущих вычислений:

func updateTime() {
    // Access current item
    if let currentItem = player.currentItem {
        // Get the current time in seconds
        let playhead = currentItem.currentTime().seconds
        let duration = currentItem.duration.seconds
        // Format seconds for human readable string
        playheadLabel.text = formatTimeFor(seconds: playhead)
        durationLabel.text = formatTimeFor(seconds: duration)
    }
}

Ответ 6

Swift:

let currentItem = yourAVPlayer.currentItem

let duration = currentItem.asset.duration
var currentTime = currentItem.asset.currentTime