2014-07-02 14 views
7

Sto eseguendo una chiamata shell adb per creare un nuovo file immagine con ffmpeg. Al momento, salgo il jpg emesso della conversione ffmpeg sul dispositivo, quindi estraggo il file sul computer usando adb pull. Mi chiedo se riesco a tagliare prima di doverlo salvare su Android, e invece salvarlo direttamente sul computer.Reindirizza il contenuto del file da Android a computer

Ecco il codice (essenzialmente) Sto provando a fare funzionare:

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

Purtroppo, quando ho eseguito questo, le copie non solo i dati di uscita del bando di ffmpeg, ma tutto ciò che sarebbe stato stampato all'output standard di adb. Quindi sono rimasto con un file jpg che ha tutti i miei dati di immagine, ma con un mucchio di parole in alto (l'output della chiamata della shell adb).

Grazie.

risposta

1

Se si dispone di un'utilità grep per il proprio dispositivo Android o l'host Windows, è possibile reindirizzare l'output tramite un comando grep -v e sopprimere le righe estranee. Per ridurre al minimo il numero di pattern che dovresti fornire a grep, puoi impostare l'opzione di registrazione ffmpeg su quiet tramite -loglevel quiet.

+0

loglevel quiet riduce l'output a zero, ma l'immagine non è ancora in grado di essere aperta ... qualche suggerimento? – parameter

+0

Sembra che ci siano ancora alcune linee aggiuntive che dovranno essere filtrate usando grep o simili. Hai ispezionato il file risultante per vedere quale extra cruft viene aggiunto in alto e/o in basso? Dato che sei su Windows, probabilmente dovrai trovare e installare manualmente uno strumento simile a grep. – scottt

+0

Forse, ma credo che questo sia in realtà il problema ora. http://stackoverflow.com/questions/13578416/read-binary-stdout-data-from-adb-shell – parameter

2

Se si conosce la stringa all'inizio del vostro jpg file, è possibile pipe a sed prima di reindirizzare al file:

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 abbinerà dal modello fino alla fine del file e stampanti solo queste righe al tuo file jpg.