screenrecord无法在模拟器中工作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了screenrecord无法在模拟器中工作相关的知识,希望对你有一定的参考价值。

自4.4 KitKat以来,android有一个shell实用程序screenrecord来记录Android设备屏幕。

如果我通过USB将物理设备与adb实用程序连接,我可以执行以下操作:

adb shell screenrecord /sdcard/sample.mp4
adb pull /sdcard/sample.mp4

但是,如果我为Android模拟器执行上述操作,我将获得一个空的sample.mp4文件。

adb shell screenrecord /sdcard/sample.mp4
adb shell ls -l /sdcard/sample.mp4
-rw-rw---- root     sdcard_r        0 2016-06-18 05:37 sample.mp4

如果我直接在模拟器的根控制台中执行screenrecord,我会看到以下内容:

root@flo:/system/bin # ./screenrecord /sdcard/sample.mp4                       
[1] + Stopped (signal)     ./screenrecord /sdcard/sample.mp4 
root@flo:/system/bin # 
[1] + Illegal instruction  ./screenrecord /sdcard/sample.mp4 

为什么screenrecord不能用于模拟器?

答案

Screenrecord使用MediaCodec API。 https://developer.android.com/reference/android/media/MediaCodec.html

确切地说,Screenrecord直接调用MediaCodec的本机接口。

据我所知,还没有模拟器支持MediaCodec。它们都支持更高级别的界面MediaPlayer https://developer.android.com/reference/android/media/MediaPlayer.html

另一答案

Screenrecord正在与Android Emulator v27.0.2合作。

我用Oreo x86 with Google Play图像测试了它,但它应该适用于任何KitKat +图像。

以上是关于screenrecord无法在模拟器中工作的主要内容,如果未能解决你的问题,请参考以下文章

为啥 MPMoviePlayerController 能在模拟器中工作,而不能在设备中工作?

当我从用户获取数据并将其保存到 SQLite 数据库中时,我应该怎么做才能使列表视图在片段中工作

Midlet 在模拟器中工作,ClassNotFoundException 在手机上

无法让 ng-controller 在离子应用程序中工作

不能在片段中工作吐司

iOS - 无法在真实设备 iPhone 11 中运行 Flutter 应用程序。iOS - 15.2,Xcode 13.2.1,它在模拟器中工作