Возможно ли получить время воспроизведения и общее время воспроизведения в AVPlayer? Если да, как я могу это сделать?
Как получить текущее время воспроизведения и общее время воспроизведения в AVPlayer?
Ответ 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