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);
}];
AVPlayerItem *currentItem = player.currentItem;
NSTimeInterval currentTime = CMTimeGetSeconds(currentItem.currentTime);
NSLog(@" Capturing Time :%f ",currentTime);
我正在從URL播放歌曲。但在CMTime持續時間和CMTime currentTime我變得0。這裏的0值有什麼問題?有誰知道解決方案? – Moxarth
斯威夫特:
let currentItem = yourAVPlayer.currentItem
let duration = currentItem.asset.duration
var currentTime = currentItem.asset.currentTime
從.currentItem.asset.duration獲取CMTime需要3-4秒?如何解決這個問題?我仍然使用線程,但沒有解決? –
用Swift 2.0,用這個;
let currentPlayerItem = AVPlayer.currentItem
let duration = currentPlayerItem?.asset.duration
var currentTime = AVPlayer.currentTime()
我試圖使用AVPlayer.currentTime(),但沒有運氣,得到錯誤訪問錯誤 – KavyaKavita
從.currentItem.asset.duration獲取CMTime需要3-4秒?如何解決這個問題?我仍然使用線程,但沒有解決? –
斯威夫特3
let currentTime:Double = player.currentItem.currentTime().seconds
您可以通過訪問currentTime()
的seconds
財產得到您的當前時間的秒數。這將返回代表時間秒數的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)
}
}
- 1. AVPlayer的播放時間目前的播放時間
- 2. 如何將UISlider.value設置爲AVPlayer當前播放時間(SWIFT)
- 3. 獲取AVPlayer播放視頻的當前時間ios
- 4. AVPlayer Streaming - 在特定時間播放流
- 5. 如何獲得在PyQt4中播放媒體的總時間?
- 6. 如何獲取當前播放時間,AVPlayer中的CMTime以毫秒爲單位?
- 7. 如何獲取在jPlayer中播放歌曲的當前時間?
- 8. 如何在video.js中獲取當前播放時間
- 9. 如何檢索當前播放HTML5音頻播放器的當前時間? (mediaelement.js)
- 10. 帶AVPlayer的AVAudioSession:狀態菜單中的「播放」圖標不顯示AVPlayer播放器正在播放的時間
- 11. 如何獲取視頻全部持續時間和當前播放時間?
- 12. 尋求當前時間後播放
- 13. 檢查avaudioplayer的當前播放時間
- 14. 如何在查找後獲取MPMoviePlayerViewController的當前播放時間?
- 15. 獲取當前播放音頻的AVPlayer
- 16. 使用jwplayer獲得當前播放時間
- 17. 獲得無視頻播放時間?
- 18. 如何在播放視頻文件時播放剩餘時間?
- 19. 如何從moviePlayer獲取當前播放時間?
- 20. WindowsMediaPlayer播放時間
- 21. AVPlayer播放時檢測
- 22. 使用AVPlayer播放UIView中的時間間隔
- 23. 顯示播放時間,播放剩餘時間
- 24. 避免AVPlayer和UIWebView在同一時間播放音樂
- 25. 在AVPlayer播放長音樂時更快找到時間
- 26. 如何獲取當前播放視頻的當前時間?從VLC Player for Android
- 27. AVPlayer不播放
- 28. 獲取多個視頻的當前播放時間
- 29. Xcode - OpenAL - 獲取播放聲音的當前時間
- 30. Quicktime視頻:隱藏控件並獲取當前播放時間
的重新也方便的方法CMTimeGetSeconds來獲得NSTimeInterval: NSTimeInterval duration = CMTimeGetSeconds(currentItem.duration); NSTimeInterval currentTime = CMTimeGetSeconds(currentItem.currentTime); – slamor
我不得不在主隊列中調用它來返回正確的值(或者你的avplayer運行的任何隊列)。 –
如何把這個推薦給LABEL? –