在尝试使用adb shell screenrecord --verbose /sdcard/demo/capture.mp4
命令从模拟器捕获屏幕视频的过程中,收到了关于未能获取输出缓冲区(err=-38),编码器失败等问题的响应。此问题发生在Android 6.0版本上。
根据ADB文档中的描述:“一些设备可能无法以其原始显示分辨率记录屏显。如遇到屏显录制的问题,请尝试使用较低的屏幕分辨率。”为解决这个问题,我们需要调整视频大小设置,通过指定期望输出的分辨率为更好的实践做法。
解决方案如下:
方法1:调整视频大小
根据文档建议,在执行adb shell screenrecord
命令时添加--size
参数以设定视频大小。这将帮助我们选择一个较低分辨率但仍被所选设备支持的最佳值。
尝试使用类似以下的命令:
adb shell screenrecord --verbose --size 854x480 /sdcard/demo/capture.mp4
这里的分辨率为854×480,是1280×720的一半。但请注意该设备的视频编码器最大支持大小,以确保所选择的分辨率被有效记录而不会导致失败。
方法2:检查设备兼容性
在确认了要使用的分辨率后,还应该再次检查Android版本和设备的具体信息,以确保所设视频分辨率为设备兼容值。例如在某些老款设备上,可能不支持较高分辨率设置。
adb shell wm size
命令会帮助验证屏幕的物理尺寸是否与我们选定的视频大小匹配。
通过以上步骤修改后,尝试再次执行screenrecord
命令。如该问题依然存在,则需确认Adb和Emulator是否存在其他兼容性或技术上的限制。如果问题依旧没有解决,请考虑更新相关工具至最新版本或者寻求更多的技术支持帮助分析原因。
正文完