具有缓冲进度的 UISlider - AVPlayer

     2023-03-13     190

关键词:

【中文标题】具有缓冲进度的 UISlider - AVPlayer【英文标题】:UISlider with buffering progress - AVPlayer 【发布时间】:2018-08-30 10:29:31 【问题描述】:

我正在使用 AVPlayer 从服务器流式传输音频,我现在要做的是显示一个自定义 UISlider 来显示缓冲的进度。

有人想出这个吗?请给我解决方案。 现在播放器一次加载整个持续时间并在 UISlider 中显示。

【问题讨论】:

是否可以暂停和恢复 AVPlayer 的缓冲? 【参考方案1】:

你需要使用preferredforwardbufferduration

此属性以秒为单位定义首选的转发缓冲区持续时间。如果设置为 0,播放器将为大多数用例选择适当的缓冲级别。将此属性设置为较低的值会增加播放停止和重新缓冲的机会,而将其设置为较高的值会增加对系统资源的需求。

也可以在这里查看如何使用的详细示例:Is it possible to pause and resume buffering of AVPlayer?

在您的播放器中,您需要使用以下函数观察时间范围

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?)

像这样:

            let timeRanges = change![NSKeyValueChangeKey.newKey] as? NSArray
        if timeRanges != nil && timeRanges!.count != 0 
            DispatchQueue.main.async 
                let cmTimeRange = (timeRanges![0] as AnyObject).timeRangeValue as CMTimeRange
                self.playerView.timeSlider.bufferValue = Float(CMTimeGetSeconds(cmTimeRange.start) + CMTimeGetSeconds(cmTimeRange.duration))
            
        

我有一个自定义滑块,其中包含我定义为 bufferValue 的变量,您可以在滑块内覆盖 func draw(_ rect: CGRect),并在缓冲区进行时应用更改。

我让draw 随时调用bufferValue 更改通过调用self.setNeedsDisplay()inside didSet

    @IBInspectable var bufferValue : Float = 0 
    didSet 
        if(bufferValue < 0 ) 
            bufferValue = 0
         else if (bufferValue > maximumValue) 
            bufferValue = maximumValue
        
        self.setNeedsDisplay()
    

【讨论】:

制作进度条(uislider)

怎样判断是否应当使用进度条  用进度条的主要目的是为了用一根管子的充满程度来直观地表示某种数值的百分比,进度条分为可拖动和不可拖动两种。  可拖动进度条和不可拖动进度条的原理几乎是一模一样,唯一的区别... 查看详情

uiprogressview和uislider

UIProgressView和UISlider两个控件长的很像,区别在于UISlider有一个可以改变进度的滑块。虽然样子差不多,提供的属性的功能也差不多,但是属性的名字差别比较大。UIProgressView和UISlider的属性对比UIProgressView控件的属性UISlider控件的... 查看详情

给 UISlider 进度条圆角 [Swift]

】给UISlider进度条圆角[Swift]【英文标题】:GiveUISliderprogressbarroundedcorners[Swift]【发布时间】:2020-07-0416:32:44【问题描述】:我想知道是否有人知道如何自定义UISlider以使进度条圆角(没有拇指图像),如下图所示:我想要什么:... 查看详情

UIslider 和 UI 进度视图嵌入

】UIslider和UI进度视图嵌入【英文标题】:UIsliderandUIprogressviewembedded【发布时间】:2016-12-1208:51:16【问题描述】:我正在尝试构建一个嵌入在进度条中的滑块,以便滑块的最小图像与进度条“进度图像”一致,并且用户只能在“... 查看详情

UISlider Swift 的 AVPlayer 进度

】UISliderSwift的AVPlayer进度【英文标题】:AVPlayerprogresswithUISliderSwift【发布时间】:2016-11-1916:06:35【问题描述】:我正在尝试使用滑块来控制音频并且一切正常,但是当我尝试使滑块值等于播放器当前时间时它崩溃了。但是,如果... 查看详情

AVPlayer 串流进度

...从服务器流式传输音频,我现在要做的是显示一个自定义UISlider,它显示缓冲的进度。类似这样的:对于AVPlayer,似乎无法获取音频文件的总下载大小或当前下载量,只能获取当前播放时间和总播放时间。有什么解决方法吗?【... 查看详情

具有单条颜色的 UISlider

】具有单条颜色的UISlider【英文标题】:UISliderwithsinglebarcolor【发布时间】:2015-09-0308:04:23【问题描述】:我不敢相信我在网上找不到答案-这就是我想要实现的-UISlider栏的单色(无论拇指在哪里)不要介意BG颜色,但我只能改变... 查看详情

UISlider 具有不均匀的步骤。

】UISlider具有不均匀的步骤。【英文标题】:UISliderwithunevensteps.【发布时间】:2014-03-1810:07:06【问题描述】:我需要实现一个滑块控件,如下图滑块的步长不均匀。每当用户滑动滑块时,滑块只会停在接近当前范围的一步。但真... 查看详情

UISlider 进展不顺利

】UISlider进展不顺利【英文标题】:UISlidernotprogressingsmoothly【发布时间】:2017-03-2901:19:50【问题描述】:我有两个UIViewController,每个都有一个UISlider。一个滑块跟踪从AVPlayer播放的音频文件的进度,另一个视图控制器滑块跟踪从AV... 查看详情

如何在 iOS 中使用 MpMoviePlayerController 在 UISlider 上显示缓冲数据?

】如何在iOS中使用MpMoviePlayerController在UISlider上显示缓冲数据?【英文标题】:HowtoshowbuffereddataonUISliderusingMpMoviePlayerControlleriniOS?【发布时间】:2014-12-1709:53:34【问题描述】:我正在使用MPMoviePlayerController播放音频,我想像这样在... 查看详情

具有居中 UISlider 和两个图像的自定义 UITableViewCell

】具有居中UISlider和两个图像的自定义UITableViewCell【英文标题】:CustomUITableViewCellwithcenteredUISliderandtwoimages【发布时间】:2011-07-3104:25:52【问题描述】:我想以编程方式创建一个自定义UITableViewCell,其中一个UISlider在中心,两个图... 查看详情

具有不同分段级别的 UISlider

】具有不同分段级别的UISlider【英文标题】:UISliderwithdifferentsegmentationlevels【发布时间】:2013-01-1800:34:35【问题描述】:我想创建一个具有不同灵敏度级别的范围滑块。它需要根据用户选择的范围内的特定部分采取不同的行动。... 查看详情

我如何制作具有步长值的 UISlider [关闭]

】我如何制作具有步长值的UISlider[关闭]【英文标题】:HowcanimakeaUISliderwithstepvalue[closed]【发布时间】:2016-02-1709:09:14【问题描述】:希望有人可以帮助我。我试图在Swift中制作一个步长值从1到5的UISlider我的代码是:@IBActionfuncyearC... 查看详情

在ios中自定义progressview / UISlider

】在ios中自定义progressview/UISlider【英文标题】:customizeprogressview/UISliderinios【发布时间】:2014-08-2011:14:54【问题描述】:我想像图像一样显示进度(除了屏幕颜色的黑色背景)。我为此使用进度视图。在这里用户没有机会手动更... 查看详情

UISlider 的自定义形状并在 Swift 5 中更新进度

】UISlider的自定义形状并在Swift5中更新进度【英文标题】:CustomshapetoUISliderandupdateprogressinSwift5【发布时间】:2021-02-1315:27:10【问题描述】:我已经检查了一些关于自定义UIView滑块的***答案,但使用它们我无法制作这样的滑块。这... 查看详情

具有不同 minimumTrackTintColor 的 UISlider,如图像预览中所示

】具有不同minimumTrackTintColor的UISlider,如图像预览中所示【英文标题】:UISliderwithdifferentminimumTrackTintColorlikeshowninimagepreview【发布时间】:2017-03-0604:45:26【问题描述】:我需要根据用户的选择用不同的颜色来实现改变UISliderminimumTr... 查看详情

具有清晰背景的 UISlider 拇指图像在其后面显示轨道

】具有清晰背景的UISlider拇指图像在其后面显示轨道【英文标题】:UISliderthumbimagewithclearbackgroundshowstrackbehindit【发布时间】:2016-07-0413:19:09【问题描述】:如何在UISlider上设置清晰的拇指背景,以便在拇指后面看不到轨道?当我... 查看详情

查询 UISlider 的表示层

】查询UISlider的表示层【英文标题】:queryingthepresentationlayerofaUISlider【发布时间】:2010-11-0418:11:38【问题描述】:我正在设置一个简单的UISlider来动画它的进度:[UIViewanimateWithDuration:songLengthdelay:0.0options:UIViewAnimationOptionRepeat|UIViewA... 查看详情