东北大汉 2023-12-01 11:01 采纳率: 0%
浏览 6

Android主屏录屏

通过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版本的不同而有所不同,所以根据实际情况灵活调整。如果以上方法都无法解决问题,可能需要深入调查设备、系统和你的应用的交互

    评论

报告相同问题?

问题事件

  • 创建了问题 12月1日