是否可以从adb shell命令读取二进制stdout?例如,如何使用screencap的所有示例包括两个步骤:
adb shell screencap -p /sdcard/foo.png
adb pull /sdcard/foo.png
Run Code Online (Sandbox Code Playgroud)
但是,该服务支持写入stdout.例如,您可以执行以下操作:
adb shell "screencap -p > /sdcard/foo2.png"
adb pull /sdcard/foo2.png
Run Code Online (Sandbox Code Playgroud)
这同样有效.但是,如何阅读亚行的产出呢?我想做的是以下内容:
adb shell screencap -p > foo3.png
Run Code Online (Sandbox Code Playgroud)
并避免中间写入SD卡.这会生成看起来像PNG文件的strings foo3.png东西(正在运行生成带有IHDR,IEND等的东西)并且大小大致相同,但就图像阅读器而言,文件已损坏.
我也尝试在java中使用ddmlib来做到这一点,结果是一样的.我很乐意使用任何必要的图书馆.我的目标是减少获取捕获的总时间.在我的设备上,使用双命令解决方案,获取图像大约需要3秒钟.使用ddmlib和捕获stdout需要不到900毫秒,但它不起作用!
是否有可能做到这一点?
编辑:这是两个文件的hexdump.第一个,screen.png来自stdout并且已损坏.第二个,xscreen来自双命令解决方案并且有效.图像应在视觉上相同.
$ hexdump -C screen.png | head
00000000 89 50 4e 47 0d 0d 0a 1a 0d 0a 00 00 00 0d 49 48 |.PNG..........IH|
00000010 44 52 00 00 02 d0 00 00 05 00 08 06 00 00 00 6e |DR.............n|
00000020 ce …Run Code Online (Sandbox Code Playgroud) 我有个问题.我想从我的网络摄像头用ffmpeg进行直播.
从另一个终端我使用此命令启动ffmpeg流,它可以工作:
sudo ffmpeg -re -f video4linux2 -i /dev/video0 -fflags nobuffer -an http://localhost:8090/feed1.ffm
Run Code Online (Sandbox Code Playgroud)在我的配置文件中,我有这个流:
<Stream test.webm>
Feed feed1.ffm
Format webm
NoAudio
VideoCodec libvpx
VideoSize 720x576
VideoFrameRate 25
# Video settings
VideoCodec libvpx
VideoSize 720x576 # Video resolution
VideoFrameRate 25 # Video FPS
AVOptionVideo flags +global_header # Parameters passed to encoder
# (same as ffmpeg command-line parameters)
AVOptionVideo cpu-used 0
AVOptionVideo qmin 10
AVOptionVideo qmax 42
#AVOptionVideo quality good
PreRoll 5
StartSendOnKey
VideoBitRate 400 # Video bitrate
</Stream>
Run Code Online (Sandbox Code Playgroud)我用它启动流
ffplay …
如何将当前显示的屏幕从我的Android设备实时流式传输到PC?有没有付费/免费工具可以做到这一点?
我正在使用ADB的屏幕录制功能来录制我的应用程序的视频.它非常方便实用.我发现的唯一问题是最长时限为3分钟(180秒).
我们可以通过哪种方式或方法或方式来增加这个时间限制?
使用USB将Android屏幕镜像到PC
方法1当然可以工作(在shell帐户下),但是,每次更新Android操作系统时,都需要对自定义代码进行更新以适应操作系统的变化,而方法2则API保持固定,并且没有需要担心操作系统的变化,问题是是否可以仅使用OpenGL / OpenMAX来实现镜像?
综上所述,通过USB镜像android屏幕的最佳方法是什么?