This question already has answers here:
Read binary stdout data from adb shell?

(15个答案)


3年前关闭。




我正在执行adb shell调用以使用ffmpeg创建新的图像文件。目前,我将ffmpeg转换的输出jpg保存到设备中,然后使用adb pull将文件拉至计算机。我想知道是否可以省掉必须先将其保存在android上,而直接将其保存到计算机上。

这是我正在尝试运行的代码(本质上):
adb shell "screencap | /data/local/tmp/tools/./ffmpeg -f rawvideo -vcodec mjpeg -q:v 5 -" > C:/Users/User/Desktop/new.jpg

不幸的是,当我运行此命令时,它不仅复制ffmpeg调用的输出数据,而且还复制所有将被打印到adb标准输出的数据。因此,我剩下的是一个jpg文件,其中包含我的所有图像数据,但顶部带有一堆单词(adb shell调用的输出)。

谢谢。

最佳答案

如果您知道jpg文件的开头字符串,则可以在重定向到该文件之前将其通过管道传输到sed:

adb shell "screencap | /data/local/tmp/tools/./ffmpeg -f rawvideo -vcodec mjpeg -q:v 5 - | sed -n ‘/PATTERN/,$p’" > C:/Users/User/Desktop/new.jpg

sed将从样式匹配到文件结尾,并且仅将这些行打印到jpg文件中。

07-24 09:44
查看更多