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. 获取AVPlayer播放视频的当前时间ios
- 3. 如何将UISlider.value设置为AVPlayer当前播放时间(SWIFT)
- 4. AVPlayer Streaming - 在特定时间播放流
- 5. 如何在video.js中获取当前播放时间
- 6. 带AVPlayer的AVAudioSession:状态菜单中的“播放”图标不显示AVPlayer播放器正在播放的时间
- 7. 检查avaudioplayer的当前播放时间
- 8. 如何在查找后获取MPMoviePlayerViewController的当前播放时间?
- 9. 获取当前播放音频的AVPlayer
- 10. 如何从moviePlayer获取当前播放时间?
- 11. AVPlayer播放时检测
- 12. 显示播放时间,播放剩余时间
- 13. 在AVPlayer播放长音乐时更快找到时间
- 14. Xcode - OpenAL - 获取播放声音的当前时间
- 15. Quicktime视频:隐藏控件并获取当前播放时间
- 16. 获取多个视频的当前播放时间
- 17. 每0.1秒检查音频播放器的当前播放时间
- 18. 如何在同一时间播放与AVPlayer和wav文件一起播放的歌曲?
- 19. 播放一个音频在时间avplayer在UITableView的
- 20. 禁用播放时间间隔无限循环AVAudio播放器
- 21. 如何通过applescript获得iTunes曲目的播放时间?
- 22. 如何知道视频播放时间?
- 23. 如何控制MPMoviePlayerController的播放时间?
- 24. 播放m3u8播放列表时,AVPlayer会自动调整吗?
- 25. 在SQL Server中播放日期时间
- 26. UE4在C++中的播放时间
- 27. 当前时间与用户设置的时间匹配时播放音乐
- 28. ASP.NET和HTML5视频播放时间
- 29. NAudio:同步录制和播放时间
- 30. AVPlayer自动播放
的重新也方便的方法CMTimeGetSeconds来获得NSTimeInterval: NSTimeInterval duration = CMTimeGetSeconds(currentItem.duration); NSTimeInterval currentTime = CMTimeGetSeconds(currentItem.currentTime); – slamor
我不得不在主队列中调用它来返回正确的值(或者你的avplayer运行的任何队列)。 –
如何把这个推荐给LABEL? –