Objective-c,AVPlayer 中的 UISlider 无法正常工作,在洗涤器之后
Posted
技术标签:
【中文标题】Objective-c,AVPlayer 中的 UISlider 无法正常工作,在洗涤器之后【英文标题】:Objective-c, UISlider in AVPlayer not working fine, after scrubber 【发布时间】:2015-08-29 05:34:42 【问题描述】:我已经实现了从 URL 播放音频歌曲的 AVPlayer。在我(洗涤器)向前/向后播放歌曲之前,它工作正常。 UISlider 根据歌曲长度结束,完全可以正常工作。但是每当我尝试向前或向后播放歌曲时,UISlider 都无法正常工作。例如:我的歌曲长度是 2.46(分钟)。 UISlider 结束,但歌曲仍在播放。 (儿子还没有完成)。即使我做了硬编码设置滑块的最大值 = 2.46,但不工作。另一方面,如果我设置 sliderbar = 3.5 (or aruond 4) 的值,那么它工作正常。任何人都知道为什么会这样。提前谢谢!!!!!!
完整代码:http://www.mediafire.com/download/tcpno1y3x8ocmri/AVPlayer_Demo.zip 我的示例代码:
- (void)updateTime:(NSTimer *)timer
currentTime = CMTimeGetSeconds(playerItem.currentTime);
duration = CMTimeGetSeconds(playerItem.duration);
[self.audiosliderBar setValue:(currentTime/duration)];
float minutes = floor(currentTime/60);
seconds =currentTime - (minutes * 60);
float duration_minutes = floor(duration/60);
duration_seconds =
duration - (duration_minutes * 60);
NSString *timeInfoString = [[NSString alloc]
initWithFormat:@"%0.0f:%0.0f",
minutes, seconds ];
self.audioCurrentTimeLabel.text = timeInfoString;
- (IBAction)audioPlayerValueChanged:(UISlider *)aSlider
[player seekToTime:CMTimeMakeWithSeconds(duration_seconds*aSlider.value, 1)];
- (IBAction)touchDown:(id)sender
[player pause];
[nsTimer2 invalidate];
- (IBAction)touchUp:(id)sender
[player play];
nsTimer2=[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateTime:) userInfo:nil repeats:YES];
【问题讨论】:
【参考方案1】:您正在计算时间duration_seconds*aSlider.value
,但滑块值不是从 0..1 开始。您应该使用 aSlider.value
或保留当前代码但更改滑块 min/max = (0,1)。
【讨论】:
@ yar1 vn ,正如你告诉我的那样,我已经尝试过(两种想法),但两种想法都行不通。你有什么想法吗!!!! 你有我可以玩的测试项目吗?发布一个下载链接(可能到 github),以便我可以帮助您找到更好的解决方案 好的,让我做,然后我会分享它的链接,谢谢 @yar1 vn,请看一下..:mediafire.com/download/tcpno1y3x8ocmri/AVPlayer_Demo.zip 您的项目无法运行,无法播放任何内容以上是关于Objective-c,AVPlayer 中的 UISlider 无法正常工作,在洗涤器之后的主要内容,如果未能解决你的问题,请参考以下文章
Objective-C 如何立即在 MPMoviePlayerController 或 AVPlayer 上播放视频,没有延迟?
Swift Radio Streaming AVPlayer
本地文件使用 AVAudioPlayer 播放,但不使用 AVPlayer?