无法使用adb屏幕录制工具来捕获安卓屏幕

9

我有一部安卓4代的Nexus手机,使用的是KitKat系统。

我尝试使用以下命令进行屏幕录制:

adb shell screenrecord --verbose /sdcard/demo.mp4

adb shell screenrecord --bit-rate 8000000 --time-limit 30 /sdcard/kitkat.mp4

两次查询的结果都返回了这个消息:

Main display is 768x1280 @60.00fps (orientation=0)
Configuring recorder for 768x1280 video at 4.00Mbps
ERROR: unable to create video/avc codec instance

在我在Android Studio中打开的调试控制台中,显示了以下日志信息:
02-02 18:16:29.058     176-4045/? E/OMX-VENC-720p﹕ Is component secure 0
02-02 18:16:29.058     176-4045/? E/OMX-VENC-720p﹕ ERROR: Omx_venc::Comp Init Returning failure
02-02 18:16:29.058     176-4045/? E/OMX-VENC-720p﹕ ERROR: venc_open failed
02-02 18:16:29.058     176-4045/? E/OMX-VENC-720p﹕ Destroy C2D instance
02-02 18:16:29.058  11072-11086/? E/ACodec﹕ Unable to instantiate a decoder for type 'video/avc'.
02-02 18:16:29.058  11072-11085/? E/MediaCodec﹕ Codec reported an error. (omx error 0x80001003, internalError -2147483648)

有人知道如何解决这个问题吗?(我尝试过较小的分辨率,但没有成功)

1
你尝试将比特率降低到4000000吗? - Emmanuel
@Emmanuel 是的,但它没有起作用。 - jmacedo
你确定那是正确的日志输出吗?它抱怨的是解码器,而不是编码器,而且其中应该还有来自screenrecord的失败消息。其他编码视频的应用程序是否正常工作?例如:https://github.com/google/grafika,启动“显示+捕获相机”活动并点击“录制”。 - fadden
2
这在MediaCodec::CreateByType()中失败,在它尝试配置编码器之前。 它根本找不到AVC编解码器。 这是Android的原始安装吗? - fadden
@fadden 是的。虽然我已经安装了一个启动器。可能是这个原因吗?(明天我会尝试使用默认的启动器)我猜不是...不知道为什么会这样。 - jmacedo
我在我的手表上有这个,有人也有吗? - powder366
5个回答

3

我遇到了相同的问题......但成功解决了......但我不知道怎么做...

当我运行以下命令时:

$>adb.exe shell screenrecord --verbose /sdcard/kitkat.mp4

我收到了这个错误:

Main display is 768x1280 @60.00fps (orientation=0) Configuring recorder for 768x1280 video at 4.00Mbp ERROR: unable to create video/avc codec instance

为了解决我的问题,我首先降低了比特率:

$>adb.exe shell screenrecord --bit-rate 1000000 --time-limit 30 --verbose /sdcard/kitkat.mp4

然后当我运行默认命令时...:

$>adb.exe shell screenrecord --verbose /sdcard/kitkat.mp4

它工作了......

也许是因为我在第一个错误后重新启动了adb服务器......

非常奇怪......


2

在遇到以下问题后,我重启了手机:

ERROR: unable to create video/avc codec instance

然后它就正常工作了...

1
重启也解决了我的问题。我还注意到,当这种情况发生时,我的设备明显变慢了(可能是一些内存问题),也许这就是导致最初问题的原因。 - k29
遇到一个问题,录制的视频文件损坏了,重启手机后问题解决了。 - jai

1
对于仍然遇到这个问题的任何人,我也曾经遇到了完全相同的问题。我在网上找不到任何可以帮助我解决它的东西。
无论如何,在某个时候,我打开了我的 Nexus 4 上的相机应用程序,发现由于某种原因,我不能再录制视频了 - 这个功能就是不工作。
此时,我想到可能有些东西已经损坏了。我对手机进行了出厂数据重置,当重置完成后,我再次尝试使用 screenrecord,问题消失了。我能够毫无问题地在我的手机上录制屏幕。
我仍然不知道是什么原因导致了这个问题,或者它是否与我在相机应用程序中遇到的视频录制功能问题有关,但将手机恢复到出厂设置解决了我的问题。
希望这可以帮助你!

1
这个回答本来可以作为对问题的评论。 - Mahonri Moriancumer

0

我不知道这是否有太大的帮助,但是:

尽管出现错误,设备实际上应该正在录制。因此忽略警告并检查 /sdcard,您的录音应该在那里。

另外尝试这个(不需要其他任何东西)

adb shell screenrecord /sdcard/demo.mp4

这应该可以工作。如果你收到错误提示

ERROR: unable to configure codec (err-2147483648)
WARNING: failed at ___x___,retrying at ___x___

别担心。

顺便提一下(我相信你已经设置好了),请再次检查驱动程序是否正确安装和路径是否配置正确等。

我正在为记录Nexus/KitKat设备的一个小项目工作:http://goo.gl/LEALYL (关于该项目的博客文章:http://goo.gl/BnBzNw


1
只有在configure()调用失败时,才会出现“在WxH处失败,正在重试WxH”的提示,因为编解码器无法处理默认分辨率,该分辨率设置为显示器的全尺寸。screenrecord会重试720p。问题中的故障发生在configure()被调用之前。它在尝试将任何内容提供给编码器之前就退出了。 - fadden
@kungapaogao 给出只有 screenrecord /sdcard/demo.mp4 命令时,我得到了 dequeueOutputBuffer 返回的 -11。你有什么解决办法吗? - Rahul

0
尝试关闭省电模式。 三星的省电模式降低了屏幕刷新率,屏幕录制不考虑此差异。其他ROM也使用此功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接