开发者社区> 问答> 正文

VOD-视频点播怎么监听kvo数据?

VOD-视频点播怎么监听kvo数据?

展开
收起
三分钟热度的鱼 2023-06-12 21:17:13 43 0
2 条回答
写回答
取消 提交回答
  • VOD-视频点播并不直接提供 KVO(键值观察)数据监听功能,但您可以通过使用 VOD 提供的事件通知功能来监听视频相关的状态变化,从而实现类似的功能。

    具体步骤如下:

    在 VOD 控制台中,进入“通知管理”页面,创建一个新的事件通知。在创建时,需要选择“事件类型”为“视频处理完成事件”,然后填写正确的“通知URL”和“鉴权密钥”等信息。

    在您的应用程序中,通过 HTTP 或 HTTPS 方式向该通知 URL 发送请求。当有视频处理完成时,VOD 将异步向该 URL 发送视频处理的相关信息,比如视频 ID、转码状态、播放地址等。

    在接收到 VOD 的通知后,您可以根据其中的视频信息来更新您的 UI 界面,实现状态的实时监控和变化。

    需要注意的是,事件通知系统对于互联网的数据传输存在一定的延迟和丢包的风险,因此建议在实际使用中进行适当的容错处理。另外,由于视频处理时间和数量的不确定性,事件通知的频率可能有所不同,因此在设计应用程序时需要充分考虑到这些因素。

    2023-06-13 08:42:05
    赞同 展开评论 打赏
  • 云端行者觅知音, 技术前沿我独行。 前言探索无边界, 阿里风光引我情。

    从网上找了下答案,希望能够帮到你。

    在VOD-视频点播中,您可以使用KVO(Key-Value Observing)来监听视频播放器的状态变化。KVO是一种iOS开发中常用的观察者模式,可以用来监听对象属性的变化。

    监听VOD视频播放器的状态变化,您需要先创建一个VODPlayer对象,并将其添加到您的视图中。然后,您可以使用KVO来监听VODPlayer对象的属性变化,例如播放状态、缓冲进度、播放进度等。

    以下是一个使用KVO监听VODPlayer状态变化的示例代码:

    // 创建VODPlayer对象
    VODPlayer *player = [[VODPlayer alloc] init];
    
    // 添加VODPlayer对象到视图中
    [self.view addSubview:player.view];
    
    // 监听播放状态变化
    [player addObserver:self forKeyPath:@"playbackState" options:NSKeyValueObservingOptionNew context:nil];
    
    // 监听缓冲进度变化
    [player addObserver:self forKeyPath:@"bufferingProgress" options:NSKeyValueObservingOptionNew context:nil];
    
    // 监听播放进度变化
    [player addObserver:self forKeyPath:@"currentPlaybackTime" options:NSKeyValueObservingOptionNew context:nil];
    
    // 实现KVO回调方法
    - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
        if ([keyPath isEqualToString:@"playbackState"]) {
            // 播放状态变化
            VODPlayerPlaybackState state = [change[NSKeyValueChangeNewKey] integerValue];
            switch (state) {
                case VODPlayerPlaybackStateStopped:
                    // 播放停止
                    break;
                case VODPlayerPlaybackStatePlaying:
                    // 播放中
                    break;
                case VODPlayerPlaybackStatePaused:
                    // 暂停播放
                    break;
                case VODPlayerPlaybackStateInterrupted:
                    // 播放中断
                    break;
                case VODPlayerPlaybackStateError:
                    // 播放出错
                    break;
                default:
                    break;
            }
        } else if ([keyPath isEqualToString:@"bufferingProgress"]) {
            // 缓冲进度变化
            CGFloat bufferingProgress = [change[NSKeyValueChangeNewKey] floatValue];
            // 更新UI显示缓冲进度
        } else if ([keyPath isEqualToString:@"currentPlaybackTime"]) {
            // 播放进度变化
            NSTimeInterval currentPlaybackTime = [change[NSKeyValueChangeNewKey] doubleValue];
            // 更新UI显示播放进度
        }
    }
    

    在上面的示例代码中,我们创建了一个ODPlayer对象,并使用KVO来监听其播放状态、缓冲进度、播放进度等属性的变化。当这些属性发生变化时,KVO会自动调用我们实现的observeValueForKeyPath方法,我们可以在该方法中更新UI显示相应的状态信息。

    需要注意的是,当您不再需要监听VODPlayer对象的属性变化时,应该及时将其移除,以避免内存泄漏。您可以使用removeObserver:forKeyPath:方法来移除KVO监听器。

    2023-06-12 22:08:10
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
+ 订阅
问答排行榜
最热
最新

相关电子书

更多
互联网音视频点播业务云上实践 立即下载
《VoD问题排查与实战手册》 立即下载
低代码开发师(初级)实战教程 立即下载