Android 12版谷歌电视Chromecast播放视频时ADB screencap失效求助
Android 12谷歌电视Chromecast截图空白问题解决方案
之前在Android 10上能用adb exec-out screencap -p > screen.png正常截取无DRM视频画面,但升级到Android 12后,用MX Player、YouTube等基于ExoPlayer的应用播放视频时,该命令只会生成分辨率正确的空白白色截图——这是因为Android 12对硬件解码的媒体流捕获做了限制。以下是几种可行的解决办法:
方法1:强制应用使用软件解码
针对ExoPlayer或MX Player这类应用,关闭硬件解码就能让screencap正常捕获画面:
- ExoPlayer系应用:在设置里找到“硬件加速”选项,直接关闭;
- MX Player:进入设置→解码器,选择“软件解码”模式。
这种方法的缺点是可能会降低高分辨率视频的播放流畅度。
方法2:用screenrecord命令转存截图
利用screenrecord录制短时长视频,再提取单帧作为截图:
- 本地安装ffmpeg的话,可直接执行:
adb exec-out screenrecord --time-limit 1 --output-format h264 - | ffmpeg -i - -vframes 1 screen.png - 没有ffmpeg的话,先录制到设备再导出提取:
之后用本地图片编辑工具从视频里提取第一帧即可。adb shell screenrecord --time-limit 1 /sdcard/temp.mp4 adb pull /sdcard/temp.mp4
方法3:开启开发者选项的“禁用HW叠加层”
进入设备开发者选项,找到“禁用HW叠加层”(部分设备叫“强制GPU渲染”)并开启,这个选项会强制所有内容通过GPU渲染而非硬件叠加层,让screencap能捕获到视频画面,但可能会影响系统整体运行性能。
方法4:尝试设备自带的物理按键截图
部分谷歌电视Chromecast支持按键组合截图:试试按下遥控器的“主页+电源”键,或者“菜单+电源”键,截图会自动保存到设备的/sdcard/Pictures/Screenshots/目录下,之后用adb pull命令导出即可。
内容的提问来源于stack exchange,提问作者SocietyBox
相关产品推荐
相关产品推荐

