

[철권8]인게임 화면 녹화에서 아두이노 Keyboard.h의 키보드 동작이 인게임에서 먹히지 않아 서보모터를 이용했었다.
그런데 며칠 전에 확인해보니 아두이노 키보드가 인게임에서 동작하여 인게임 화면 녹화를 개선해보았다.
기존 작업은 로직도 번거롭고, 수작업과 하드웨어 리소스가 많이 들어갔다.
커맨드별 영상을 얻기 위해 꽤 많은 과정을 거쳐야 한다..
1,2,5,9번 과정이 수작업인데, 특히 9번 검수 및 trim이 꽤 수고로운 작업이다.
잘못 trim된 영상을 원본 영상에서 찾아 직접 trim해서 영상을 저장해야 하는데, 보통 잘못 trim된 영상이 10개 이상이다.
10개 넘는 영상을 직접 trim하는 게 꽤 수고가 든다..
ffmpeg를 써서 프레임 추출하고 trim하는데, 꽤 리소스를 잡아먹어서 8번 과정을 할 경우 컴퓨터가 몇 분동안 멈추거나 작업 중단되는 경우가 다반사다.
그리고 인코딩이 잘못되어 재생되지 않는 영상이 만들어지는 경우도 꽤 있다.(10개 내외)
자동화를 위해 ffmpeg를 쓰는데, 컴퓨팅 리소스가 안 되면 내가 노가다 작업을 해야 한다!(🙀)
캐릭터가 추가될 때마다 이 불편한 과정을 겪다보니 개선할 필요가 있어서 고민해봤다.
Keyboard 함수가 인게임에서 먹히네?아두이노의 Keyboard가 인게임에서 막힌 줄 알고 키보드 입력이 필요한 경우를 최소로 했었다.
그런데 다시 확인해보니 Keyboard 함수가 인게임에서 동작하여 Keyboard를 활용한 새로운 로직을 생각해보았다.
기존에는 통으로 녹화한 영상에서 기술별로 trim을 했다면, 이제 기술별로 녹화하기 때문에 과정이 훨씬 간단해졌다.
내가 할 일은 2번에서 추출한 이름이 문제 없는지만 보면 된다.
이제 서보모터가 필요하지 않다!
서보모터를 키보드에 고정하지 않아도 되고, 아두이노 보드만 있으면 되니까 준비할 게 없다.
ffmpeg로 영상을 trim하지 않아도 되기 때문에 이전보다 훨씬 작업이 가볍다.
과정도 간단하고 작업도 가볍기 때문에 원하는 결과물을 얻는 시간이 많이 단축되었다.
커맨드별 영상을 얻으려면 이전에는 1~2시간 걸렸는데, 이제는 30분 이내로 가능하다!
#include <Keyboard.h>
void pressNext() {
Keyboard.press('s');
delay(200);
Keyboard.release('s');
}
void pressRecordShortcut() {
Keyboard.press(KEY_LEFT_ALT); // 왼쪽 alt 키
Keyboard.press(KEY_LEFT_GUI); // windows 키
Keyboard.press('r');
delay(1000);
Keyboard.releaseAll();
}
void setup() {
Keyboard.begin();
// ...
}
void loop() {
if (작업 끝나면) {
Keyboard.end();
}
}
#include <Keyboard.h>Keyboard.begin()Keyboard.press() 등 함수를 사용하려면 반드시 먼저 호출해야 한다.Keyboard.end()Keyboard.press()KEY_LEFT_ALT, KEY_LEFT_GUI처럼 미리 지정된 키도 가능Keyboard.release()Keyboard.releaseAll()