Closed bluesky0506 closed 5 months ago
如何实现进入页面自动加载视频播放地址进行播放。目前都需要设置播放按钮点击才可以播放。谢谢
自动播放,可以在XComponent的onload回调以后,按照如下顺序设置surface,设置url,然后在播放器的onReady回调里开始start播放即可
XComponent({ type: "surface", id: "video", controller: this.controller }).onLoad(() => { this.surfaceId = this.controller.getXComponentSurfaceId() Logger.d(TAG, "surface view created: " + this.surfaceId) // bind a surface to render picture this.player!.setSurface(this.surfaceId) Logger.d(TAG, "surface view created: " + this.surfaceId)
setTimeout(() => {
this.player!.setMediaSource(MediaSourceFactory.createUrl(this.filePath), () => {
this.player!.start()
})
}, 50);
}).onDestroy(() => {
Logger.d(TAG, "surface view destroy")
})
我试了下,设置url时如果不加定时器延迟,几乎不能自动播放。但是加上这个延迟50毫秒就可以了。麻烦帮我看看是不是那些写的不对,这个是我在git上的demo上进行修改调试的。谢谢
XComponent({ type: "surface", id: "video", controller: this.controller }).onLoad(() => { this.surfaceId = this.controller.getXComponentSurfaceId() Logger.d(TAG, "surface view created: " + this.surfaceId) // bind a surface to render picture this.player!.setSurface(this.surfaceId) Logger.d(TAG, "surface view created: " + this.surfaceId)
setTimeout(() => { this.player!.setMediaSource(MediaSourceFactory.createUrl(this.filePath), () => { this.player!.start() }) }, 50); }).onDestroy(() => { Logger.d(TAG, "surface view destroy") })
我试了下,设置url时如果不加定时器延迟,几乎不能自动播放。但是加上这个延迟50毫秒就可以了。麻烦帮我看看是不是那些写的不对,这个是我在git上的demo上进行修改调试的。谢谢
我在我这边的3568平台试了,同样代码是正常的哦,播放地址https://media.w3.org/2010/05/sintel/trailer.mp4。请问下你的运行环境是怎样的,或者能否提供一份日志我看看
XComponent({ type: "surface", id: "video", controller: this.controller }).onLoad(() => { this.surfaceId = this.controller.getXComponentSurfaceId() Logger.d(TAG, "surface view created: " + this.surfaceId) // bind a surface to render picture this.player!.setSurface(this.surfaceId) Logger.d(TAG, "surface view created: " + this.surfaceId)
setTimeout(() => { this.player!.setMediaSource(MediaSourceFactory.createUrl(this.filePath), () => { this.player!.start() }) }, 50); }).onDestroy(() => { Logger.d(TAG, "surface view destroy") })
我试了下,设置url时如果不加定时器延迟,几乎不能自动播放。但是加上这个延迟50毫秒就可以了。麻烦帮我看看是不是那些写的不对,这个是我在git上的demo上进行修改调试的。谢谢
如果你加个延时就可以了,那很有可能是系统执行创建播放器实例比较慢,因为目前AvPlayer创建没有同步接口,只有异步创建,如果比onload回调要慢,那有可能出现start的时候播放器实例还未成功创建,导致无法播放。 实际项目中,player一般会封装成单例,可以考虑在ability的oncreate中初始化单例,这样进入页面后基本上就不存在还未创建实例了。
我使用的是11的api了,使用的是华为的模拟器。
[Uploading log.txt…]()
我明天按照你说的再试试,非常感谢
我明天按照你说的再试试,非常感谢
已更新1.0.5版本,可以尝试使用最新版本了,内部已经针对创建实例接口执行慢的场景进行了优化处理
如何实现进入页面自动加载视频播放地址进行播放。目前都需要设置播放按钮点击才可以播放。谢谢