JH LIM LAB NOTES
Lab Note 032
VIDEO / EXPERIMENT29 JAN 2026

Three Days of Black Bars and Silence

StatusSHIPPED

The black bars

녹화한 영상 가장자리에 검은 띠가 남았다. 잘라내야 했다. FFmpeg 에 `cropdetect` 가 있다. 영상을 보고 잘라낼 만큼을 알아서 찾아준다. 이걸 쓰면 끝날 줄 알았다.

Auto, hardcoded, auto

사흘 동안 세 번 오갔다. · 1/27 자동 감지 붙임 · 1/28 하드코딩으로 — 1280×720 기준 위 8 · 아래 20 · 좌우 96 · 1/29 다시 자동 감지로 자동이 안 맞았던 이유가 커밋에 남아 있다. 임계값을 24 에서 16 으로 낮추고, 샘플 지점을 60초 이후로 옮겼다. 영상 앞부분은 페이드인이라 화면이 어둡다. 그 구간을 보고 판단하면 검은 띠와 어두운 화면을 구분 못 한다. 밝아진 뒤를 보게 하니 자동이 맞기 시작했다.

자동 감지가 틀렸을 땐 알고리즘보다 어디를 보고 있는지를 먼저 본다.

The audio kept disappearing

자르고 나면 소리가 없어졌다. 이것도 사흘 갔다. · 오디오 스트림을 명시적으로 매핑 (두 번) · 오프닝·클로징 영상에 무음 오디오 트랙 추가 — 오디오가 없는 클립과 있는 클립을 이으면 전부 사라진다 · 오디오 스트림이 아예 없는 영상을 크롭할 때 나던 에러 · `-c:a copy` 로 원본 유지 → 다시 aac 로 복원 영상 필터를 걸면 비디오만 처리되고 오디오는 따로 챙겨야 한다. 한 번 배우면 될 것 같은데 붙이는 자리마다 다시 걸렸다.

And the sync

자막이 밀리는 것도 같은 사흘 안에 있었다. `-async 1` 을 쓰고 있었다. 오디오를 늘이거나 줄여 맞추는 옵션이다. 오디오를 건드리니 자막 기준이 흔들렸다. `-start_at_zero` 로 바꿨다. 늘이지 않고 시작점을 맞추는 쪽이다. 타임스탬프를 전처리에서 미리 정렬하고, 자막이 깜빡이지 않게 짧은 세그먼트를 합치는 로직도 같이 넣었다.

One more, four months later

5월 11일 마지막 커밋도 같은 부류다. `ffprobe` 의 csv 출력에서 값 순서가 매번 같지 않았다. 순서를 믿고 자르던 코드가 가끔 엉뚱한 값을 읽었다. key=value 로 파싱하게 바꿨다. 순서에 기대는 코드는 대부분 언젠가 한 번 문다.

Related project
PPT to Video
Slides in, narrated lesson video out
Technical