通过MediaRecorder及VirtualDisplay实现了录屏,但是通过HDMI扩展了一个屏幕后开启录屏时扩展屏花屏,主屏重启程序了,怀疑是视频源相关的问题,找了半天没有找到单独设置视频来源是主屏的方法,能解答一下吗或者给出排查方向
2条回答 默认 最新
梦回阑珊 2023-12-02 09:32关注回复不易,麻烦关注下博主,后面还有问题直接私信我,谢谢!!!
在Android上实现屏幕录制时,如果你通过HDMI扩展了一个屏幕,并在录制时遇到扩展屏花屏或者主屏重启的问题,可能是由于视频源的选择或配置问题导致的。以下是一些建议和排查方向:
选择合适的视频源: 在录屏时,选择合适的视频源非常重要。你可以尝试使用 MediaRecorder 时选择不同的视频源来查看效果。通常,主屏的视频源应该是 MediaRecorder.VideoSource.SURFACE。
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);检查Surface的配置: 确保 Surface 的配置与你的录制要求一致,特别是分辨率等参数。你可以尝试设置合适的分辨率、比特率等。
mediaRecorder.setVideoSize(width, height); mediaRecorder.setVideoEncodingBitRate(bitrate);处理扩展屏幕情况: 如果使用了HDMI扩展了屏幕,可能需要在代码中动态适应扩展屏幕的配置。你可以监听屏幕变化事件,然后动态调整录制配置。
DisplayManager displayManager = (DisplayManager) getSystemService(Context.DISPLAY_SERVICE); displayManager.registerDisplayListener(new DisplayManager.DisplayListener() { @Override public void onDisplayAdded(int displayId) { // 处理屏幕添加事件 } @Override public void onDisplayRemoved(int displayId) { // 处理屏幕移除事件 } @Override public void onDisplayChanged(int displayId) { // 处理屏幕变化事件 } }, null);分离Surface和VirtualDisplay: 如果可能,尝试在录制结束时分离 Surface 和 VirtualDisplay,以确保在下一次录制时重新配置。
系统权限和限制: 检查你的应用是否具有足够的权限来执行录制操作。某些系统级的限制可能会影响录屏的表现。
固件/驱动更新: 检查设备的固件和驱动是否是最新的。有时,制造商会发布更新来修复与外部显示器或HDMI连接相关的问题。
记录错误和异常: 在捕获错误或异常时,确保记录并检查相关的错误日志。这可能会提供关于发生问题的更多细节。
最终,问题可能会因设备和Android版本的不同而有所不同,所以根据实际情况灵活调整。如果以上方法都无法解决问题,可能需要深入调查设备、系统和你的应用的交互
评论 打赏 举报解决 1无用