2014-07-02 14 views
7

Wykonuję wywołanie powłoki adb, aby utworzyć nowy plik obrazu za pomocą ffmpeg. Obecnie zapisuję wyjściowy plik jpg z konwersją ffmpeg na urządzenie, a następnie przeciągam plik na komputer za pomocą polecenia adb pull. Zastanawiam się, czy mogę najpierw wyciąć go na Androida i po prostu zapisać go bezpośrednio na komputerze.Przekierowanie zawartości pliku z Androida na komputer

Oto kod (zasadniczo) Próbuję uruchomić:

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

Niestety, kiedy biegnę to, to kopie nie tylko dane wyjściowe wywołanie ffmpeg, ale wszystko, które zostały wydrukowane do standardowego wyjścia adb. Pozostaje mi plik jpg, który zawiera wszystkie moje dane obrazu, ale z mnóstwem słów u góry (wyjście wywołania powłoki adb).

Dziękuję.

Odpowiedz

1

Jeśli masz narzędzie grep dla swojego urządzenia z Androidem lub hosta Windows, możesz potokować dane wyjściowe poleceniem grep -v i ukryć linie zewnętrzne. Aby zminimalizować liczbę wzorców, które musisz dostarczyć do grep, możesz ustawić opcję rejestrowania ffmpeg na cichą poprzez -loglevel quiet.

+0

Funkcja cichosza zmniejsza wydajność do zera, ale obraz nadal nie może zostać otwarty ... żadnych sugestii? – parameter

+0

Wygląda na to, że jest jeszcze kilka dodatkowych linii, które będą wymagały odfiltrowania za pomocą polecenia grep lub podobnego. Czy sprawdziłeś wynikowy plik, aby zobaczyć, jakie dodatkowe elementy są dodawane na górze i/lub na dole? Ponieważ jesteś w systemie Windows, prawdopodobnie będziesz musiał ręcznie znaleźć i zainstalować narzędzie podobne do grep. – scottt

+0

Być może, ale uważam, że teraz tak właśnie jest. http://stackoverflow.com/questions/13578416/read-binary-stdout-data-from-adb-shell – parameter

2

Jeśli znasz ciąg początku swojego jpg plik można rura go sed przed przekierowaniem do pliku:

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 będzie pasował od wzorca do końca pliku i wydrukować tylko te linie do swojego plik jpg.

Powiązane problemy