开发者社区> 问答> 正文

VOD-视频点播安卓,我用AliListPlayer,为什么只有声音没有图像?

VOD-视频点播安卓,我用AliListPlayer,想对帧后出来后再显示到屏幕,使用glsurfaceview,为什么只有声音没有图像?我们之前用的系统mediaplayer+glsurfaceview是可以正常显示的。我们需要自定义的shader对视频帧进行处理后再显示到屏幕。没有报错,onframeavailable也能正常被回掉。

展开
收起
三分钟热度的鱼 2023-06-12 20:34:58 131 0
3 条回答
写回答
取消 提交回答
  • 对于您使用 AliListPlayer 在安卓上播放视频的问题,可能是由于您没有正确进行纹理绑定而导致的。具体而言,AliListPlayer 内部使用 OpenGL ES 硬件加速来渲染视频,需要正确绑定纹理 ID 才能将视频帧显示到屏幕上。我建议您检查一下是否正确地进行了纹理 ID 的绑定,并且在 GLSurfaceView 中正确地设置了 OpenGL ES 的版本和支持。另外,建议您尝试在代码中输出调试信息,以便更好地确定问题所在。

    同时,如果您想对视频帧进行自定义处理后再显示到屏幕上,可以通过编写自定义的 OpenGL ES shader 来实现。您可以在 AliListPlayer 播放视频时进行帧捕获,并将捕获到的视频帧交给自己编写的 shader 进行处理,在处理完成后将结果显示到屏幕上。值得注意的是,这种做法需要您了解 OpenGL ES 编程的相关知识,并且需要在编写 shader 时正确处理输入和输出纹理的格式和大小等信息。

    如果您需要更详细的帮助,建议您参考阿里云官方文档或论坛等其他资料,了解 AliListPlayer 的使用方法和常见问题解决方法。

    2023-06-13 08:49:17
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    如果您使用AliListPlayer播放VOD视频时,只有声音没有图像,可能是由于SurfaceView的创建和销毁时机不正确,导致视频画面无法正常显示。建议您检查以下几个方面:

    确认SurfaceView创建和销毁时机 在使用AliListPlayer时,需要在SurfaceView创建后将其与AliListPlayer关联,并在SurfaceView销毁前解除关联。请确保SurfaceView的创建和销毁时机正确,并在AliListPlayer的prepare和release方法中正确处理SurfaceView的关联和解除关联。

    确认视频解码器的状态和参数 在使用AliListPlayer播放VOD视频时,需要确保视频解码器的状态和参数正确。请检查视频的编码格式、分辨率、帧率等参数是否与AliListPlayer设置的参数一致,以确保视频能够正常解码播放。同时,还需要注意视频解码器的状态,以确保视频解码器能够正常工作。

    确认自定义Shader的实现 如果您需要使用自定义Shader对视频帧进行处理后再显示到屏幕,需要确保自定义Shader的实现正确。请检查自定义Shader的编写是否正确,并在AliListPlayer的视频帧回调函数中正确处理视频帧的数据和纹理信息。

    2023-06-13 08:17:37
    赞同 展开评论 打赏
  • 根据你提供的信息,可能是因为AliListPlayer播放器的视频渲染方式和系统MediaPlayer不同,需要自定义的shader对视频帧进行处理后再显示到屏幕。你可以参考AliListPlayer的开发文档,了解其视频渲染方式,以及如何自定义shader进行视频帧的处理。

    另外,你也可以检查一下你的代码是否正确设置了AliListPlayer的视频渲染器,以及是否正确设置了GLSurfaceView的渲染模式为RENDERMODE_WHEN_DIRTY,以确保只有在有新帧可用时才进行渲染。

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

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载