2014-07-02 6 views
7

Ich führe einen ADB-Shell-Aufruf aus, um eine neue Bilddatei mit ffmpeg zu erstellen. Derzeit speichere ich das ausgegebene JPG der ffmpeg-Konvertierung auf das Gerät und ziehe dann die Datei mithilfe von adb pull auf den Computer. Ich frage mich, ob ich es ausschneiden kann, es zuerst auf dem Android zu speichern und es direkt auf dem Computer zu speichern.Dateiinhalte von Android auf Computer umleiten

Hier ist der Code (im Wesentlichen) Ich versuche zu laufen:

adb shell "screencap | /data/local/tmp/tools/./ffmpeg -f rawvideo -vcodec mjpeg -q:v 5 -" > C:/Users/User/Desktop/new.jpg 

Leider, wenn ich laufen diese, kopiert es nicht nur die Ausgangsdaten des ffmpeg Anruf, aber alles, was gedruckt worden wäre, zur adb-Standardausgabe. Ich bin also mit einer JPG-Datei, die alle meine Bilddaten enthält, aber mit einer Reihe von Wörtern an der Spitze (die Ausgabe der Adb-Shell-Aufruf).

Vielen Dank.

Antwort

1

Wenn Sie ein Grep-Dienstprogramm für Ihr Android-Gerät oder Ihren Windows-Host verwenden, können Sie die Ausgabe über einen grep -v-Befehl pipen und die überflüssigen Zeilen unterdrücken. Um die Anzahl der Muster zu minimieren, die Sie für grep bereitstellen müssen, können Sie die Protokollierungsoption ffmpeg über -loglevel quiet auf leisen stellen.

+0

Loglevel leise reduziert die Ausgabe auf nichts, aber das Bild kann immer noch nicht geöffnet werden ... irgendwelche Vorschläge? – parameter

+0

Es klingt, als gäbe es noch ein paar zusätzliche Zeilen, die mit einem Grep o.ä. herausgefiltert werden müssen. Haben Sie die resultierende Datei inspiziert, um zu sehen, welcher zusätzliche Betrag oben und/oder unten hinzugefügt wird? Da Sie unter Windows arbeiten, müssen Sie wahrscheinlich ein grep-ähnliches Tool manuell finden und installieren. – scottt

+0

Möglicherweise, aber ich glaube, das ist eigentlich das Problem jetzt. http://stackoverflow.com/questions/13578416/read-binary-stdout-data-from-adb-shell – parameter

2

Wenn Sie den Anfang Zeichenfolge Ihrer jpg wissen Datei, die Sie Rohr kann es vor in der Datei umleiten 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 wird vom Muster bis zum Ende der Datei- und Druck nur diese Zeilen entsprechen Ihrer JPG-Datei.