视频点播js上传成功,接口方式转码回调,第一次回调成功,更换视频就不回调了,清空浏览器再次上传有回调,什么原因呢?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您描述的问题,视频点播在使用 JavaScript SDK 上传成功后,通过接口方式触发转码回调时,第一次回调成功,但更换视频后不再触发回调,清空浏览器缓存后重新上传又能正常触发回调。这种现象可能与以下几个方面的原因有关:
在使用 JavaScript SDK 上传文件时,上传凭证(UploadAuth 和 UploadAddress)或 STS Token 是用于授权的关键信息。如果这些信息被缓存且未正确刷新,可能导致后续上传操作无法正确触发回调。
原因分析:
解决方法:
uploader.setUploadAuthAndAddress
或 uploader.setSTSToken
方法刷新上传凭证或 STS Token。onUploadstarted
回调中检查 uploadInfo.videoId
是否为空。如果 videoId
存在,则需要调用刷新上传凭证的接口以确保凭证有效。JavaScript SDK 支持断点续传功能,当上传中断后再次上传同一文件时,SDK 会从上次完成的位置继续上传。这可能导致某些情况下上传流程未完全重新初始化,从而影响回调的触发。
原因分析:
解决方法:
uploader.cleanList()
方法清理上传文件列表,确保 SDK 不会误用之前的断点续传状态。uploader.resumeFile(index)
方法明确指定恢复的文件。视频点播服务的回调配置可能受到浏览器缓存或服务器端状态的影响,导致更换视频后回调未能正确触发。
原因分析:
解决方法:
TranscodeComplete
或 StreamTranscodeComplete
)已正确配置,避免因事件类型不匹配导致回调失败。浏览器缓存可能导致 SDK 的部分状态未正确刷新,从而影响上传和回调流程。
原因分析:
userId
、region
等)未正确更新,进而影响上传和回调的触发。解决方法:
AliyunUpload.Vod
实例时,确保所有参数(如 userId
和 region
)都正确设置,并避免依赖浏览器缓存。?t=timestamp
)以防止缓存。根据上述分析,建议您按照以下步骤排查和解决问题: 1. 刷新上传凭证:在每次上传新视频时,确保调用 setUploadAuthAndAddress
或 setSTSToken
方法刷新凭证。 2. 清理上传列表:在更换视频时,调用 cleanList()
方法清理上传文件列表,避免断点续传机制的影响。 3. 验证回调配置:检查回调 URL 和事件类型配置是否正确,并通过工具验证回调服务器的可用性。 4. 避免浏览器缓存:初始化 SDK 时确保参数正确设置,并使用无缓存模式加载 SDK 脚本。
如果问题仍未解决,建议联系阿里云技术支持,提供相关日志(如上传凭证、回调请求等)以便进一步诊断。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。