在VOD-视频点播调用prepare后,为什么没有回调?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
开启了自动播放,就不会收到 prepare 完成回调,关闭自动播放才会收到。此回答整理自钉群“阿里云-VOD-视频点播-技术交流(进群先看公告)”
在调用 AliyunVodPlayer 的 prepare 方法后,如果没有回调,可能是因为以下原因:
1.网络连接问题:prepare 方法通常需要从网络上获取视频的元数据,如果网络连接不好或者连接超时,就可能导致无法获取元数据,进而无法回调对应的事件。
2.视频格式问题:如果视频格式不支持或者视频文件损坏,也会导致无法获取元数据,进而无法回调事件。
3.调用的线程不正确:根据 AliyunVodPlayer 的官方文档,prepare 方法是异步调用的,即是在子线程中进行的。因此,在调用 prepare 方法时,需要保证是在正确的线程中进行,否则就可能会由于线程问题而导致无法收到回调事件。
4.监听器没有设置:在调用 prepare 方法前,需要设置 AliyunVodPlayer 的监听器,才能够接收到对应的事件回调。否则,即使 prepare 方法成功执行,也不会触发任何事件回调。例如,您可以通过以下方式设置监听器:
AliyunPlayer aliyunPlayer = new AliyunPlayer(context);
//设置监听器
aliyunPlayer.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared() {
//回调事件
}
});
//调用 prepare 方法
aliyunPlayer.prepare();
以上是一些可能导致 prepare 方法无回调的原因,您可以根据具体情况进行排查和调试。