FaithAX

YouTube Live 음성과 화면 싱크가 어긋날 때 원인을 찾는 법

CONTENT-023 editorial cover

작성자

카테고리:

YouTube Live 음성과 화면 싱크가 어긋날 때 원인을 찾는 법

예배 방송에서 입 모양과 음성이 맞지 않을 때 먼저 확인할 것은 “몇 ms를 넣을까”가 아니다. 처음부터 일정하게 어긋나는 offset인지, 방송 시간이 지날수록 차이가 커지는 drift인지, OBS 녹화는 맞지만 YouTube 시청 화면에서만 다르게 보이는지를 구분해야 한다. 세 현상은 원인과 해결 위치가 다르다.

먼저 세 종류의 싱크 문제를 구분한다

고정 offset·증가하는 drift·전체 platform latency의 차이
고정 offset·증가하는 drift·전체 platform latency의 차이

고정 offset은 시작 1분과 30분의 차이가 거의 같다. 영상 캡처보드가 몇 frame 늦고 음향은 USB mixer로 바로 들어오는 구성처럼, 두 신호가 서로 다른 처리 경로를 통과할 때 흔하다. Drift는 시작에는 맞지만 시간이 갈수록 간격이 커진다. 서로 다른 장치 clock, sample rate 변환, frame timing 불안정을 의심한다. Platform latency는 음성과 영상이 서로 맞아도 촬영 순간부터 시청 화면까지 전체가 늦는 현상이다. YouTube의 Normal/Low/Ultra-low latency 선택은 이 마지막 지연에 관한 것으로, 고정 lip-sync offset과 같은 설정이 아니다.

보이는 현상 1분/30분 비교 가장 먼저 의심할 층 Offset만으로 해결 가능한가
음성이 항상 먼저 들림 차이가 거의 일정 영상 capture/processing 경로 대체로 가능, audio를 늦춤
영상이 항상 먼저 보임 차이가 거의 일정 audio DSP/USB/processing 경로 경로 확인 후 가능
시간이 갈수록 벌어짐 차이가 계속 증가 clock·sample rate·frame timing 아니오, 근본 timing 문제부터
둘은 맞지만 전체가 늦음 내부 lip-sync는 일정 encoder·network·platform buffer 아니오, stream latency 설정 영역

신호 경로가 다르면 지연도 다르다

영상과 음성이 OBS까지 통과하는 서로 다른 처리 경로
영상과 음성이 OBS까지 통과하는 서로 다른 처리 경로

교회 방송에서 영상은 `camera → HDMI → capture device → USB/PCIe → OBS`를 거칠 수 있다. 음성은 `microphone → mixer/DSP → USB audio → OBS`로 더 짧게 들어오는 경우가 많다. Camera의 internal processing, frame conversion, capture buffering은 영상에 시간을 더하고, digital mixer의 plugin이나 bus processing은 음성에 시간을 더한다.

따라서 “OBS가 늦는다”는 표현만으로는 부족하다. 카메라 영상과 그 카메라의 embedded HDMI audio를 함께 캡처해 비교하면 capture 장치 내부에서 이미 sync가 맞는지 볼 수 있다. 반대로 별도 mixer audio와 capture video를 합치는 순간부터 어긋난다면 두 입력 경로의 상대 latency를 측정해야 한다.

박수 한 번으로 offset을 측정한다

손뼉, clapboard, 두 막대의 충돌처럼 화면과 소리가 동시에 분명하게 생기는 사건을 만든다. OBS에서 local recording을 하고 frame 단위로 입 모양이나 충돌 순간과 waveform 시작을 비교한다. 30fps 영상은 한 frame이 약 33.3ms, 60fps는 약 16.7ms다. 눈대중으로 ‘조금 늦다’고 판단하기보다 frame 수를 ms로 바꿔 기록하면 재검증할 수 있다.

예를 들어 30fps 녹화에서 소리가 영상보다 3 frame 빠르면 약 100ms의 차이다. 이 경우 음성 source에 양의 sync offset을 주어 늦추는 방향을 검토한다. 그러나 숫자는 장비·resolution·frame rate·driver마다 달라지므로 다른 교회의 값을 복사하면 안 된다. 현재 경로에서 직접 측정한 값만 사용한다.

어느 출력에서 처음 어긋나는지 찾는다

Capture preview·OBS recording·YouTube watch page에서 첫 오류 지점을 찾는 흐름
Capture preview·OBS recording·YouTube watch page에서 첫 오류 지점을 찾는 흐름
관찰 지점 확인하는 것 여기서 맞으면 다음으로 여기서 틀리면
Camera/capture preview embedded audio와 video 별도 mixer 결합 확인 camera/capture 설정과 mode 점검
OBS local recording 실제 encoded output YouTube ingest/player 확인 OBS source timing·offset·driver 확인
YouTube Live Control Room preview ingest된 stream 별도 시청 기기 확인 encoder 설정·stream health 확인
공개 watch page viewer가 받는 결과 장시간 drift 시험 player/network 조건 비교

OBS Audio Mixer Guide는 source 장치의 가장 이른 monitoring 지점과 OBS에 도착한 지점을 각각 들어보라고 안내한다. Headphone으로 mixer direct monitor만 듣고 화면을 보면 OBS output에 적용된 보정이 반영되지 않을 수 있다. 최종 판단은 반드시 local recording이나 실제 stream output에서 해야 한다.

고정 offset은 한 source에 한 번만 적용한다

OBS의 Advanced Audio Properties에는 audio source별 Sync Offset(ms)가 있다. 영상이 더 늦어 음성이 먼저 들리면 일반적으로 음성에 지연을 더한다. 이미 mixer DSP나 capture software에서 delay를 적용했다면 OBS에서 같은 값을 다시 더하지 않는다. 어느 장치가 기준 clock인지, 어느 층에서 보정했는지를 운영 기록에 남긴다.

보정 후에는 박수 시험을 세 번 반복하고 작은 발음과 큰 발음에서도 확인한다. 하나의 scene에서만 맞고 다른 scene에서 틀리면 source를 복제하면서 다른 offset이 생겼는지 확인한다. 녹화 track과 streaming track이 다르면 두 output을 각각 재생해야 한다.

시간이 갈수록 벌어지면 offset 값을 늘리지 않는다

Drift는 고정 delay로 해결되지 않는다. 5분에 20ms, 30분에 120ms처럼 차이가 비례해 커진다면 audio interface와 camera/capture가 서로 다른 clock을 사용하거나 sample-rate 변환이 안정적이지 않을 수 있다. System audio, mixer, interface, OBS의 sample rate를 일관되게 맞추고 driver와 firmware를 확인한다. 장치가 중간에 재연결되거나 input lock을 다시 잡는지도 log와 함께 본다.

Drift 시험은 최소한 실제 예배 길이에 가까운 local recording으로 한다. 시작, 중간, 끝에 같은 clap marker를 남기면 offset이 일정한지 증가하는지 구분할 수 있다. CPU/GPU overload나 dropped frames가 동시에 나타난다면 OBS Stats와 log를 함께 저장하되, 네트워크 dropped frames만으로 audio clock drift를 단정하지 않는다.

YouTube latency와 lip-sync를 혼동하지 않는다

YouTube는 stream latency를 카메라 캡처부터 시청자 화면까지의 지연으로 설명한다. Normal latency는 buffer 여유가 크고 안정성과 화질에 유리하며, Low와 Ultra-low는 상호작용에는 빠르지만 viewer buffering 위험이 커진다. 이 선택은 음성과 영상 중 한쪽만 수십 ms 미는 장치가 아니다.

YouTube는 실제 방송과 비슷한 audio와 movement를 포함해 사전 test하고, Live Control Room의 stream health를 보라고 권장한다. 공개 watch page에서는 encoder 외에도 transcoding과 player buffer가 존재한다. 그러므로 OBS local recording이 맞고 여러 시청 기기에서도 A/V 관계가 같다면, 단순히 전체가 몇 초 늦는 것은 lip-sync 오류로 분류하지 않는다.

재현 가능한 40분 검증 절차

시작·15분·35분의 marker로 장시간 drift를 측정하는 시험
시작·15분·35분의 marker로 장시간 drift를 측정하는 시험

첫 5분은 camera embedded audio와 video를 같은 capture 경로로 녹화한다. 다음에는 실제 mixer audio로 바꾸고 시작 clap을 남긴다. 15분과 35분에도 marker를 넣어 drift를 본다. 동시에 OBS Stats와 YouTube stream health의 시각을 기록한다. 마지막으로 별도 휴대폰에서 watch page를 보되, 휴대폰 자체의 Bluetooth audio는 추가 latency를 만들 수 있으므로 내장 speaker 또는 유선 출력으로 비교한다.

결과표에는 source path, resolution/FPS, sample rate, measured offset, 적용 위치, 시작/종료 drift, OBS와 YouTube 결과를 남긴다. 다음 주에 장비가 바뀌어도 같은 시험을 반복할 수 있어야 한다.

결론: Offset, drift, platform latency는 서로 다른 문제다

고정 offset은 두 입력 경로의 상대 지연을 측정해 한 지점에서 보정한다. Drift는 clock과 sample rate, driver, 장시간 안정성을 고쳐야 한다. 전체 stream latency는 YouTube buffer와 network를 포함한 별도 문제다. Local recording에서 시작·중간·끝의 marker를 비교하고, 그 다음 YouTube output을 확인하면 감으로 숫자를 바꾸는 일을 피할 수 있다.

공식 자료