Возможно ли получить время воспроизведения и общее время воспроизведения в 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