0. 개요


cmd에서는 명령을 입력하면 명령어를 한 줄씩 실행한다.
즉, 한 줄 실행이 완료될 때 까지 기다리고, 완료되면 그 다음 줄을 실행한다.
이전 회사에서, 한번에 여러개의 디바이스를 다룰 일이 많았다.

아래 예시를 보면, 두개의 디바이스가 연결된 상태에서 screencap 명령어를 통해 스크린샷을 찍어보았다.

위와 같이, more than one device/emulator 에러 메세지가 나오면서 실행이 되지 않는다!


1. -s 옵션

컴퓨터 입장에서 보면, "어떤 디바이스로 해달라는거야?" 라고 되물을 것이다.

우리는 그래서, 직접 이름을 불러주고 명령을 해야한다.

adb devices 명령어를 입력하면 연결되어있는 디바이스의 이름(시리얼넘버) 확인이 가능하다.

아래와 같이 -s 옵션을 붙이면 디바이스를 지정할 수 있다!


2. 직렬 실행

그렇다면, 한번에 두개를 실행하고 싶다면 어떻게 해야 가능할까?

이렇게 두 줄 쓰는 방법도 있을것이다.

하지만 다음과 같이 생각할 내용이 있다.

만약 스크립트가 길어진다면?

set device_1=R3CRA0JW89R
set device_2=R3CX208V22K

adb -s %device_1% shell screencap -p /sdcard/screenshot.png
adb -s %device_2% shell screencap -p /sdcard/screenshot.png

adb -s %device_1% shell screencap -p /sdcard/screenshot1.png
adb -s %device_2% shell screencap -p /sdcard/screenshot1.png

adb -s %device_1% shell screencap -p /sdcard/screenshot2.png
adb -s %device_2% shell screencap -p /sdcard/screenshot2.png

이렇게 길게 작성해야한다..

그리고 또 아래와 같은 문제점이 있다.

  1. 만약 시리얼 넘버가 계속 바뀐다면?
    이런 상황이 있을 수도 있다. 같은 디바이스에서는 같은 시리얼 넘버가 출력되지만, 만약 디바이스를 계속 바꾸면서 하는 경우도 있다.
  2. 만약 스크린샷 찍는것 뿐만 아니라 스크립트가 더 있고, 하나 완료하는데 몇분씩 걸린다면?
    처음 말했듯, cmd에서는 코드를 한줄씩 읽고 실행한다.
    만약 디바이스가 10대라고 가정하면, 1대의 디바이스가 스크립트 실행중일때 나머지 9대의 디바이스는 아무것도 안하는 상태로 있는다.

이미지로 비유하자면, 아래와 같다.

그렇다면 이게 한계일까?

 

그렇지 않다!

다소 억지스럽지만, cmd에서는 병렬 실행을 구현할 수 있다.


3. 병렬 실행

우리가 원하는건 아래 이미지와 같은 병렬 실행이다.

그러기 위해서, 디바이스 만큼 cmd 스크립트를 실행하는 방법으로 구현해냈다.

우선, 아래와 같은 폴더 구조를 만들었다.

order.bat에서는, 다음과 같은 스크립트가 들어가있다.

@echo off
setlocal enabledelayedexpansion

for /f "skip=1" %%i in ('adb devices | findstr "devices"') do (
    start /min capture.bat %%i
)

복잡한 명령어긴 하지만, 단순하게 설명하자면

  1. 'adb devices'를 실행한다.
  2. 거기서, | findstr devices (파이프)를 이용해 devices인 경우를 필터(디바이스가 오프라인, 인증되지 않은 경우 제외)
  3. skip=1 을 통해 adb devices의 List of devices attached 구문을 무시하고, 시리얼 넘버를 가져온다.
  4. start /min 옵션을 통해, 최소화된 창으로 capture.bat을 실행한다.
  5. 다만, capture.bat에 %%i 를 통해 시리얼넘버를 같이 실어서 보내준다.

capture.bat에서는, %1을 통해 해당 시리얼 넘버를 사용할 수 있다.

echo %1 시리얼 넘버를 넘겨받았습니다.
pause>nul

capture.bat을 위와같이 설정하고, 실행한다면

이렇게 시리얼넘버를 넘겨 받을 것을 확인할 수 있다.

그렇다면,

이제 이런식으로 작성하면 다소 억지스럽지만 병렬 실행을 구현할 수 있다.


4. 결론

억지스럽다 표현한 이유는, 저렇게 실행하면 실행한 수 만큼 cmd가 켜지기 때문이다..

그래도 조금은 투박하지만 분명한 성과는 있었다.

3분정도 걸리는 스크립트를 6개의 디바이스에 직렬로 실행했을 때에는 18분 가량 걸리곤 했었는데, 병렬 구현을 한 후에는 약 5분정도 걸리게 되었다. (병렬로 실행하면서 렉이 좀 걸리니까 느려지면서 추가됨)

파이썬에는 아예 병렬 실행을 하는 쓰레딩 라이브러리가 있는 것으로 알고 있다.

이후 실무에서 만약 병렬 실행 수요를 마주친다면 한번쯤 활용해보면 될 것 같다.

0. 개요

이전 포스트 (https://janguri.tistory.com/8) 에서 ffmpeg를 이용해 영상을 효율적으로 다루게 되었다.

이번 글에서는, 이전에 만든 배치파일들을 효율적으로 통합하여 사용하는 방법을 소개한다.


1. Batch Script 통합

먼저 개인적인 경험을 소개하자면, 첫 회사에서 맨땅에 배치 스크립트를 만들면서 아래 이미지처럼 배치 스크립트가 많아져 불편한 경험이 있었다.

그래서, 최종적으로 하나의 통합 툴을 만들어 사용을 조금 더 편리하게 개선하게 되었다.

위 이미지와 같이 여러 배치 스크립트를 하나에 모아두고, 숫자를 입력 해 해당하는 행동을 하는 통합 툴을 만들어냈다.


2. 통합 방식

숫자를 입력 받으면, 여러가지 방법이 있으나 경험 상 두가지 방법을 선택해 사용했다.

  1. batch 파일을 불러(call) 실행하기
  2. 한 배치 스크립트에 모든 명령어 다 집어넣고 그 명령어 찾아가(goto) 실행하기

1번 방식의 경우, 기존에 만들었던 배치파일을 한 폴더에 다 넣고 통합 배치 스크립트에서 필요할때 불러 쓰는 방식이다.

장점으로는, 수정이 필요하면 해당 배치 파일을 꺼내 수정하면 되니 편리하다는 점.

단점으로는, 폴더 하나가 더 있어서 거슬릴 수도 있다 정도?

2번 방식의 경우, 통합 배치 스크립트에 모든 스크립트를 때려박는 방식이다.

장점으로는, 배치스크립트 단 하나만 있으면 되니 매우 깔끔하다!

단점으로는, 수정이 필요할 때 하나하나 찾아가야하니 수정이 불편하다는 점.

아래 두 코드 예시를 보면 이해가 쉬울것이다.

 

REM 1번 방식 / call로 불러들이기

@echo off
:loop
cls
chcp 65001 >nul
echo [1] capture
echo [2] record
echo [3] compress
echo [4] cut
echo [5] gif
echo [6] png
set /p num="Select number : "

if %num%==1 call batch\capture.bat
if %num%==2 call batch\record.bat
if %num%==3 call batch\compress.bat
if %num%==4 call batch\cut.bat
if %num%==5 call batch\gif.bat
if %num%==6 call batch\png.bat
goto loop

1번 방식의 스크립트다.

숫자를 입력하면, call 명령어를 통해 batch 폴더 내의 배치스크립트를 실행시키고, loop를 통해 다시 처음 위치로 이동하는 형식이다.

REM 2번 방식 //goto 명령어로 찾아가기

@echo off
:loop
cls
chcp 65001 >nul
echo [1] capture
echo [2] record
echo [3] compress
echo [4] cut
echo [5] gif
echo [6] png
set /p num="Select number : "

if %num%==1 goto capture
if %num%==2 goto record
if %num%==3 goto compress
if %num%==4 goto cut
if %num%==5 goto gif
if %num%==6 goto png
goto loop

:capture
echo this is capture script
goto loop
:record
echo this is record script
goto loop
:compress
echo this is compress script
goto loop
:cut
echo this is cut script
goto loop
:gif
echo this is gif script
goto loop
:png
echo this is png script
goto loop

2번 방식의 스크립트다.

숫자를 입력하면, goto 명령어를 통해 원하는 위치로 이동해 스크립트를 실행하고, 다시 loop 위치로 이동하는 형식이다.

 

사실 첫 선택이 중요하진 않다. 규모가 커지기 전에 알맞게 리팩토링 하면 된다. ^ㅇ^

여기서는 1번 방식 (call) 을 사용하여 불러 쓰는, 파이썬으로 치면 모듈 호출과 같은 느낌으로 만들어 보겠다.


3. 호출

우선, 아래 이미지와 같은 폴더 구조를 만들었다.

Tool.bat에서 batch\실행할스크립트.bat 을 넣어주면 끝!

이전에 만들어 둔 캡쳐 스크립트를 capture.bat에 넣어준다.

set /p file_name="Input file name : "
adb shell screencap -p /sdcard/screenshot.png
adb pull /sdcard/screenshot.png %file_name%.png

그런 후, 숫자 1을 입력해 capture.bat이 작동하는지에 대해 확인을 하면

  1. [1] capture 을 입력해서
  2. batch\capture.bat 파일이 열리고
  3. capture.bat 파일이 끝날 때 goto loop을 통해 :loop으로 이동된다.

파일은 capture.bat이 위치한 폴더에 생성되지 않고 Tool.bat에서 생성된다.

 

set /p file_name="Input file name : "
echo Recording...
echo press Ctrl + C and "N" to quit recording
adb shell screenrecord /sdcard/record.mp4
adb pull /sdcard/record.mp4 %file_name%.mp4

*화면 녹화

set /p file_name="Input file name : " 
ffmpeg -i %file_name% -vcodec libx264 -crf 28 -preset slow output_%file_name%
cls
set /p answer=Delete Original? [y/n] :
if %answer%==n goto quit
if %answer%==N goto quit
del %file_name%
ren output_%file_name% %file_name%
:quit

* 영상 압축

** Deleter Original? 을 통해 변경 전의 파일을 지우고 압축된 파일을 기존 파일명으로 변경할지의 분기점을 추가했다.

 

set /p file_name="Input file name : " 
echo enter Start time and finish time...
set /p start_time="Start time : "
set /p finish_time="Finish time : "
ffmpeg -i %file_name% -ss %start_time% -to %finish_time% output_%file_name%
set /p answer=Delete Original? [y/n]
if %answer%==n goto quit
if %answer%==N goto quit
del %file_name%
ren output_%file_name% %file_name%
:quit

* 영상 자르기

 

set /p file_name="Input file name : " 
ffmpeg -i %file_name% -vf "fps=8, palettegen=max_colors=32" -y palette.png
ffmpeg -i %file_name% -i palette.png -filter_complex "fps=8,paletteuse=dither=bayer" -b:v 1000k %file_name:~0,-4%.gif
del palette.png
:quit

* gif 만들기

**배치 파일에서 문자열 추출 규칙을 활용해, %file_name:~0,-4%로 작성하였다. (0번째부터 출력하는데 뒤에 .mp4 제거)
참고 : https://sysdocu.tistory.com/1516

 

set /p file_name="Input file name : " 
if not exist frames md frames
set /p frame_per_second=" How may Frames per second? : "
ffmpeg -i %file_name% -vf "fps=%frame_per_second%" frames/%%d.png
start frames

*png 만들기

**파일명을 입력 후, 초당 프레임을 설정할 수 있는 방식으로 구현해냈다.

*** frames 폴더가 없으면 만들고, 작업 후 frames 폴더를 자동으로 실행하게 구현했다.

 


4. 오류

명령어를 통해 생성된 파일을 삭제하거나이동할때 문제가 발생할 수도 있다.

그럴때를 대비해, adb 명령어를 재시작하는 코드를 추가했다.

if %num%==7 adb kill-server

7번을 입력했을 때 , adb kill-server을 추가해줬다.

뭐.. 다른 방법이 있을 수도 있지만 그냥 단순히 이렇게 재시작해주는 방법으로 해결했다.

 


5. 결론

말고도, 배치 스크립트를 활용하는 방법이 무궁무진하다!

예로, 아래와 같이 이쁜 색상코드를 넣을 수도 있다. (ANSI ESCAPE CODE 검색)

바로 다음으로, 배치스크립트로 병렬 실행을 (다소 억지스럽게) 구현한 방법을 소개하고자 한다.

0. 개요

이전 포스트 (https://janguri.tistory.com/6) 에서, adb를 활용해 모바일의 이슈 이미지와 영상을 간편하게 확보할 수 있었다.

이번 글에서는, 확보한 영상을 효과적으로 편집하여 이슈 리포트하기 용이하게 바꾸는 방법을 소개한다.


1. FFmpeg란?

 

FFmpeg는 동영상 및 오디오를 인코딩, 디코딩, 변환, 스트리밍할 수 있는 강력한 오픈소스 멀티미디어 프레임워크.

영상 관련 작업을 할 때 자동으로 해결할 수 있고, ADB와 마찬가지로 CLI 기반이라 ADB와 통합하기 간편하다.

그리고, 오픈소스다!


2. FFmpeg 설치

ADB와 마찬가지로, FFmpeg 설치 글을 보면 쉽게 다운로드 할 수 있다.

*ffmpeg는 essentials,full 버전 두개가 있는데, 간단한 명령어만 사용하기에 essentials로도 충분한 것 같다.

혹시 심화적으로 활용할 거라면 그때가서 full 다운로드 하면 될 것 같다.

다만, 다운로드는 소스코드가 아닌 Get packages & executable files를 선택해야 한다!

좌측 하단에 있는 OS 中 선택

 

ADB와 마찬가지로 FFmpeg도

  1. FFmpeg를 OS에 맞게 설치 후 압축 해제
  2. 환경 변수 설정

을 해준 후, 명령 프롬프트(cmd) 창에서 ffmpeg를 입력해보면

이런 식으로 출력이 된다면 성공이다!


3. 압축

QA 업무를 하다보면 이슈 영상이 보통 10초에서, 길면 1분가량 확보되곤 한다.

샘플로 약 14초가량 일반적인 게임을 S24 Ultra 기종으로 녹화하자, 36 MB의 영상이 녹화되었다.

아래는 아주 간단한 ffmpeg 예시다!

ffmpeg -i Test.mp4 Output.mp4

정말 단순하게도, Test.mp4 영상을 ffmpeg에 input해서 Output.mp4로 바꿔줬다.

그런데 결과는,

위와 같이, 용량이 1/3이나 감소한 결과를 얻을 수 있었다!

그렇다면 더 압축하는 방법이 있을까?

ffmpeg에는 옵션을 넣어서 추가적인 압축 형식을 만들 수 있다.

다양한 옵션이 있지만, 아래가 가장 자주 쓰이는 예제라고 한다.

ffmpeg -i test.mp4 -vcodec libx264 -crf 28 -preset slow output2.mp4

결과를 보면,

1/6 이라는 엄청난 압축률을 구현할 수 있다!

아래는 지피티에게 물어본 압축 옵션들이다.

명령어 설명
-vf scale=1280:720 해상도를 1280x720(720p)로 축소 (화질 유지하면서 용량 절감)
-crf 28 H.264 화질 기반 압축 (값이 클수록 용량↓, 화질↓) (보통 18~28 사용)
-preset slow 압축 효율 최적화 (속도를 늦추는 대신 용량 감소) (ultrafast ~ veryslow 선택 가능)
-c:v libx264 H.264 코덱으로 압축 (높은 호환성 & 압축률)
-b:v 1000k 비디오 비트레이트를 1000kbps로 제한 (낮을수록 용량↓)
-r 24 프레임 레이트를 24fps로 변경 (프레임 수 줄여 용량↓)

체감상 -crf 옵션을 28 초과해도 약간은 뭉개지지만 내용 식별에는 무리가 없었다.

업무에 맞게 잘 테스트해보고 압축하면 용량을 효율적으로 압축시켜 공유할 수 있을 것이다.


4. 자르기

이슈 영상을 보면, 항상 시작 시간부터 끝나는 시간까지 이슈가 꽉 녹화되는 경우는 없다.

보통 시작하고 몇초 후, 그리고 끝나기 몇초 전에 이슈 상황이 녹화되곤 한다.

아래는, 아주 간단한 영상 자르기 명령어를 소개한다!

ffmpeg -i test.mp4 -ss 2 -to 10 output.mp4

-ss : 시작 초

2 : 2초부터

-to : 끝나는 초

10 : 10초까지

즉, 2초부터 10초까지의 영상을 남기고 자르겠다는 뜻.

14초의 영상이, 8초 영상으로 잘린 결과를 확인할 수 있다.

기본적으로 ffmpeg를 걸쳤기에 ffmpeg의 영상 압축 효과도 덤으로!

만약 시작 시간부터 n초동안 유지하고싶다면?

ffmpeg -i test.mp4 -ss 2 -t 8 output2.mp4

똑같은 결과가 나오는 것을 확인할 수 있다.


5. GIF로 바꾸기

또, 가끔 짧은 이슈 영상은 gif로 공유하면 편하게 이슈 리포트가 가능하다.

이슈를 받아보는 입장에서, 영상을 다운로드해서 켜는 것보다 gif파일이 이슈 리포트와 함께 나오면 보기 편하기 때문.

 

그래서 만약 gif로 그냥 변환해버리면?

ffmpeg -i output.mp4 output.gif

분명 2mb도 안되는 mp4 파일이 110mb짜리 영상이 돼버렸다......

 

이를 해결하기 위해, GPT의 도움을 받자면

ffmpeg -i output.mp4 -vf "fps=8, palettegen=max_colors=32" -y palette.png
ffmpeg -i output.mp4 -i palette.png -filter_complex "fps=8,paletteuse=dither=bayer" -b:v 1000k output.gif

위와 같은 두 줄의 코드로 실행하면 적당한 크기와 화질의 영상 파일이 palette.png와 함께 생성된다.

약 8초간의 영상을 gif파일로 변환

옵션에 대한 설명을 하자면,

옵션 설명
fps=8 프레임을 8fps로 줄여 용량 감소
palettegen=max_colors=32 GIF 색상을 32색으로 제한 (기본 256색)
paletteuse=dither=bayer 색상 품질 유지하면서 용량 압축
-b:v 1000k 비디오 비트레이트를 1000kbps로 제한하여 용량 절약

이렇다!

영상 압축처럼, 각자 테스트해보고 원하는 품질의 gif 파일을 뽑아내면 될 것 같다.


6. PNG 변환

아주 단순한 기능이다. 아래 예제를 보면

ffmpeg -i test.mp4 -vf "fps=1" %d.png

test.mp4 파일을 fps=1 단위로 쪼개서 png로 변환해준다.

이전에 -ss -to 기능을 활용해 2초부터 8초 사이의 fps=1 단위로 png로 변환해 줄수도 있다.

-vf "fps=1" 옵션은 fps=2로 변경 시 위 이미지의 2배 결과를 얻을 수 있다. 즉, 0.5초마다 사진이 찍히는 것.

조금 더 디테일하게 영상을 찍어야한다면 저 수치를 건들여 줄 수 있을것이다.

옵션을 없애도 실행은 되지만, 모든 프레임을 다 찍어버리는 탓에 꼭 fps를 명시해줘야 컴퓨터 건강에 이롭다.


7. 마침

ffmpeg 중에서도 매우 단순 기능만을 나열해봤다.

체감상 QA 업무중에는 위 4개 기능이 가장 많이 쓰였고, 그 외의 기능은 필요할때 찾아 쓰곤 했지만 딱히 저 위의 세 기능 말고는 더 쓰지는 않았었다.

이전에 사용한 adb 기능을 연계해서, 영상 녹화 이후 적절히 잘라서 이슈 리포트에 큰 도움이 되었다.

다음에는, adb와 ffmpeg 기능들을 통합하여 더욱 간편하게 사용하는 배치 스크립트 방법을 포스트하려고 한다!

0. 이슈 리포트 간소화를 하게 된 이유

모바일 기기에서 캡처 / 녹화 파일을 컴퓨터로 옮겨서 업로드하는 과정을 사수에게 묻자, 아래와 같은 방법을 소개받았다.

  1. 모바일 녹화, 캡처 기능 사용해 캡처
  2. 모바일 메신저를 이용해 업로드
  3. PC 메신저로 다운로드

업무 중 모바일 기기를 다뤄야 하는 건 굉장히 불편하고, 번거롭다.

따라서, 모바일 기기를 최대한 안 다루기 위해 툴을 만들었다.

그리고, 무엇보다 CMD 창에서 주르륵 업무가 되는 게 있어 보인다! (중요)

 

우선 직접 만들어 본 툴들을 순서대로 소개하고, 최종적으로 만든 배치 툴을 소개하려고 한다.

아래는 만들어서 쓴 기능들이다.

 

  1. 모바일 스크린샷 캡처 (ADB)
  2. 모바일 영상 녹화 (ADB)
  3. ADB Wi-Fi로 연결 (ADB) 
  4. 영상 압축 (FFMPEG)
  5. 영상 자르기 (FFMPEG)

또 유용한 기능이 있으면 얼마든지 추가할 계획이다.

우선 이번 포스트에서는 캡처, 녹화를 배치스크립트로 만들어 보려 한다.


1. ADB란?

ADB(Android Debug Bridge)는 안드로이드 디바이스와 PC를 연결하여 다양한 작업을 수행할 수 있도록 돕는 CLI 툴.

QA 엔지니어의 입장에서, 앱 설치 및 삭제, 로그 분석, 화면 캡처 등 테스트의 전반적인 도움을 얻을 수 있다!

특히, 여러가지 세팅 또는 테스트 과정에서 물리적인 조작을 명령어 입력으로 해결할 수 있고, 심지어 배치 스크립트를 활용해 행동을 자동화할 수 있다.

그리고, ADB는 오픈소스다!

ADB는 오픈소스 프로젝트

이번 글에서는 ADB와 배치 스크립트를 활용해 캡처/녹화하고, 이를 컴퓨터로 가지고 오는 과정을 자동화하는 간단한! 글이다.


 

2. ADB 설치

구글에 adb 설치를 검색하면 수 많은 글이 있으니, 보고 따라 하면 누구나 다운로드할 수 있다.

크게 해야 할 행동은 아래와 같다.

  1. ADB 설치해서 압축 해제
  2. 압축 해제 된 위치를 "시스템 환경 변수 편집"에 추가
  3. 휴대폰을 adb 사용 가능하게 설정 (USB 디버깅)

위 행동을 하고 나면, 명령 프롬프트(cmd) 창에서 adb devices를 입력해 보자.

실행 화면

위와 같이 실행되면 성공!

만약 연결된 디바이스가 있다면, 아래 이미지처럼 나온다.

R3CRA0JW89R => 내 단말기의 시리얼 넘버

device => 상태


3. 캡처

이제 다음과 같은 명령어를 입력해 볼 수 있다.

adb shell screencap -p /sdcard/screenshot.png

말 그대로, 스크린샷을 찍어보겠다는 의미.

스크린샷을 찍어서, /sdcard/screenshot.png  경로에 스크린샷이 저장된다.

adb pull /sdcard/screenshot.png

스크린샷을 찍으면, adb pull 명령어를 입력해 휴대폰에 저장된 스크린샷을 컴퓨터로 옮길 수 있다.

아래 이미지처럼, adb_cap/screenshot.png 와 같이 경로를 지정해도 된다. 대신 adb_cap 폴더가 있어야 함.

이미지 캡처

 

배치 스크립트를 만들어, 위 일련의 과정을 자동화할 수 있다.

아래 스크립트를 메모장에 적고, 확장자를 .bat로 바꿔서 저장하고 실행하면 빠르게 작동하는 캡처 스크립트가 완성된다.

@echo off

set /p file_name="Input file name : "

adb shell screencap -p /sdcard/screenshot.png

adb pull /sdcard/screenshot.png %file_name%.png

@echo off는 배치 스크립트가 깔끔하게 나오게 하는 기능이다. (실행 과정을 일일이 보여주는 "복창" 기능을 끄게 함)

file_name 변수에 파일명을 집어넣고,

스크린샷을 찍고,

추출할 때 %file_name% 을 이용해 png 이름을 파일명으로 저장한다.

 

📌 사용 방법

  1. 메모장에 위 스크립트 붙여 넣기 후 .bat 확장자로 저장 (adb_screenshot.bat)
  2. 배치 스크립트를 실행 (adb_screenshot.bat)
  3. 파일명을 작성 (영어로 작성)
  4. 자동으로 스크린샷 촬영 → "파일명.png" 파일이 PC로 이동

 

 

adb shell screencap -p /sdcard/screenshot.png 명령어를 반복하면, 기존 저장된 동일명의 이미지는 사라진다.

혹시 모바일 기기 용량 걱정에 직접 지우고 싶으면, 아래 명령어를 추가하면 된다.

adb shell rm /sdcard/screenshot.png

 

이제, 배치파일을 실행하고 파일명을 적는 것 만으로 자동으로 스크린숏이 저장되고, 컴퓨터로 옮길 수 있다!

 


4. 녹화

캡처가 있으면, 녹화 기능 또한 있다.

아래는 녹화 기능 명령어를 소개한다.

adb shell screenrecord /sdcard/record.mp4

해당 스크립트를 입력하면, 최대 3분까지 녹화가 된다.

중간에 Ctrl + C를 눌러 영상 녹화를 중단할 수 있다.

 

캡처와 마찬가지로, 일련의 과정을 배치 스크립트로 자동화할 수 있다.

 

@echo off

set /p file_name="Input file name : "

echo Recording...

echo press Ctrl + C and "N" to quit recording

adb shell screenrecord /sdcard/record.mp4

adb pull /sdcard/record.mp4 %file_name%.mp4

위와 유사하나, Ctrl + C를 누른 후 "N"을 입력하라는 안내 문구를 추가했다.

 

📌 사용 방법

  1. 메모장에 위 스크립트 붙여 넣기 후 .bat 확장자로 저장 (adb_screenrecord.bat)
  2. 배치 스크립트를 실행 (adb_screenrecord.bat)
  3. 파일명을 작성 (영어로 작성)
  4. 자동으로 스크린샷 촬영 → "파일명.mp4" 파일이  PC로 이동

 

배치 스크립트에서 Ctrl + C 는 스크립트 작업을 종료한다는 키

* Ctrl + C를 누르고, 위와같이 N 입력 후 Enter을 해야 스크립트가 진행된다.


5. 마침

adb 중 아주 기초적이고 단순한 기능이고, QA 업무를 조금이라도 해본 사람들이면 아마 쉽게 알 내용들이다..만!

분명 메신저로 파일을 옮기고 있을 사람들이 분명 있을 것 같아서.. 도움이 될 수도 있을 것 같아 길게 작성해 봤다!!

다음번에는, ffmpeg를 이용해 영상을 압축하고, 자르는 기능을 소개하려고 한다..!

+ Recent posts