반응형
AVPlayer에서 현재 재생 시간과 총 재생 시간을 어떻게 알 수 있습니까?
AVPlayer에서 재생 시간과 총 재생 시간을 얻을 수 있습니까? 그렇다면 어떻게해야합니까?
currentItem
속성 을 사용하여 현재 재생중인 항목에 액세스 할 수 있습니다 .
AVPlayerItem *currentItem = yourAVPlayer.currentItem;
그러면 요청 된 시간 값을 쉽게 얻을 수 있습니다.
CMTime duration = currentItem.duration; //total time
CMTime currentTime = currentItem.currentTime; //playing time
_audioPlayer = [self playerWithAudio:_audio];
_observer =
[_audioPlayer addPeriodicTimeObserverForInterval:CMTimeMake(1, 2)
queue:dispatch_get_main_queue()
usingBlock:^(CMTime time)
{
_progress = CMTimeGetSeconds(time);
}];
스위프트 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
}
이제 이전 계산으로 UI를 업데이트합니다.
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)
}
}
Swift 4.2에서는 이것을 사용하십시오.
let currentPlayer = AVPlayer()
if let currentItem = currentPlayer.currentItem {
let duration = currentItem.asset.duration
}
let currentTime = currentPlayer.currentTime()
AVPlayerItem *currentItem = player.currentItem;
NSTimeInterval currentTime = CMTimeGetSeconds(currentItem.currentTime);
NSLog(@" Capturing Time :%f ",currentTime);
빠른:
let currentItem = yourAVPlayer.currentItem
let duration = currentItem.asset.duration
var currentTime = currentItem.asset.currentTime
스위프트 4
self.playerItem = AVPlayerItem(url: videoUrl!)
self.player = AVPlayer(playerItem: self.playerItem)
self.player?.addPeriodicTimeObserver(forInterval: CMTimeMakeWithSeconds(1, 1), queue: DispatchQueue.main, using: { (time) in
if self.player!.currentItem?.status == .readyToPlay {
let currentTime = CMTimeGetSeconds(self.player!.currentTime())
let secs = Int(currentTime)
self.timeLabel.text = NSString(format: "%02d:%02d", secs/60, secs%60) as String//"\(secs/60):\(secs%60)"
})
}
Swift 4.2 :
let currentItem = yourAVPlayer.currentItem
let duration = currentItem.asset.duration
let currentTime = currentItem.currentTime()
반응형
'UFO ET IT' 카테고리의 다른 글
npm으로 bcrypt 설치 오류 (0) | 2020.11.12 |
---|---|
FactoryGirl 및 다형성 연관 (0) | 2020.11.12 |
jQuery로 jquery가 선택한 선택 옵션을 어떻게 재설정합니까? (0) | 2020.11.12 |
“rmagick”gem 설치 문제 (0) | 2020.11.12 |
비교기를 사용한 정렬-내림차순 (사용자 정의 클래스) (0) | 2020.11.12 |