Skip to content

소리가 안들려요 : ffprobe는 정상인데 왜 안 들리죠? ​

소리가 들리지 않아요 ​

라이브 스트리밍 운영하다 보면 "소리가 안 들려요"라는 리포트가 들어올 때가 있습니다. 원인은 수십 가지입니다. 플레이어 문제, 트랜스코딩 오디오 트랙 누락, 코덱 미스매치, 오디오 레벨 자체가 바닥 .. 어디서부터 봐야 하는지 감이 안 올 수 있습니다. 결론부터 말하면, 원본부터 확인하는 게 제일 빠릅니다. 파이프라인 끝단(플레이어)에서 올라가는 것보다, 입력단(소스)에서 내려가는 게 디버깅 효율이 훨씬 좋습니다. 그리고 속으로 제발 원래 소리가 없었길 기도합니다..

Step 1: 원본 스트림 덤프 ​

가장 확실한 방법은 인코더가 쏘는 원본 스트림을 그대로 떠보는 것입니다. rtmpdump로 RTMP 스트림을 파일로 떨굽니다:

bash
rtmpdump -r "rtmp://push-domain/live/streamName" -o dump.flv

SRT 입력이면 ffmpeg으로 직접 받을 수도 있습니다:

bash
ffmpeg -i "srt://host:port?mode=caller" -c copy -t 30 dump.ts

30초 정도면 충분합니다. 이 파일에 오디오가 정상적으로 들어있는지 확인하는 게 첫 번째 관문입니다.

Step 2: 라우드니스 측정 ​

덤프 파일을 재생해 직접 들어보는 것도 가능합니다. 다만 “무음”과 “거의 들리지 않을 정도로 작은 음량”은 생각보다 구분하기 어렵습니다. 이런 경우에는 EBU R128 필터를 이용해 라우드니스를 측정하면 보다 객관적으로 상태를 확인할 수 있습니다.

EBU R128이란 ​

EBU R128은 유럽방송연맹(EBU)이 정한 오디오 라우드니스 표준입니다. 핵심 지표는 LUFS (Loudness Units relative to Full Scale):

LUFS 값의미
-14 LUFS일반적인 스트리밍 서비스 기준 (Spotify, YouTube 등)
-23 LUFS방송 표준 (EBU R128 권장)
-40 LUFS 이하거의 안 들림
-70 LUFS사실상 무음. 디지털 노이즈 플로어 수준

LUFS가 -70이면 "소리가 있긴 있다"가 아니라 "없다"고 봐야 합니다. 기기 자체의 전자 잡음 수준이니까.

Step 3: ffmpeg ebur128 필터로 측정 ​

ffmpeg에 내장된 ebur128 필터로 덤프 파일의 라우드니스를 측정합니다:

bash
ffmpeg -i dump.flv -af ebur128=peak=true -f null -

출력 마지막에 요약 정보가 나옵니다:

plaintext
[Parsed_ebur128_0 @ 0x...] Summary:

  Integrated loudness:
    I:         -70.0 LUFS
    Threshold: -80.0 LUFS

  Loudness range:
    LRA:         0.0 LU
    Threshold:  -90.0 LUFS
    LRA low:   -70.0 LUFS
    LRA high:  -70.0 LUFS

  True peak:
    Peak:      -69.8 dBFS

image.png

Integrated loudness가 -70.0 LUFS. 이건 무음입니다.

Loudness Range(LRA)도 0.0 LU — 볼륨 변화가 전혀 없다는 뜻입니다. 실제 오디오 신호가 있다면 LRA가 최소 몇 LU는 나옵니다.

정상 케이스는 보통 이렇습니다.

image.png

결론 ​

이 케이스의 원인: 원본 스트림에 애초에 소리가 없었습니다.

트랜스코딩 문제도 아니고, CDN 문제도 아니고, 플레이어 문제도 아닙니다. 인코더가 오디오를 못 잡고 있거나, 소스 장비(카메라, 믹서)에서 오디오 출력이 안 되고 있는 상황입니다.

오디오 트랙 자체는 존재합니다 — 컨테이너에 오디오 스트림이 있고, 샘플도 들어있습니다. 다만 레벨이 -70 LUFS, 즉 디지털 노이즈 플로어 수준이라 사실상 무음 데이터만 찍히고 있는 것입니다. ffprobe로 보면 오디오 스트림이 "있다"고 나오니까 메타데이터만 보면 정상으로 보일 수 있습니다. 이래서 라우드니스 측정이 필요합니다.

이런 케이스에서 "트랜스코더 설정 바꿔보자", "CDN 캐시 퍼지하자" 이런 식으로 가면 시간만 날립니다. 원본 덤프 → 라우드니스 측정. 2분이면 끝나는 걸 돌아가면 2시간입니다.

요약 체크리스트 ​

  1. rtmpdump 또는 ffmpeg -c copy로 원본 스트림 덤프

  2. ffmpeg -af ebur128=peak=true -f null -로 라우드니스 측정

  3. Integrated loudness 확인:

    • -40 LUFS 이상: 정상 범위. 문제는 다운스트림에 있음
    • -40 ~ -60 LUFS: 매우 낮음. 소스 레벨 확인 필요
    • -60 LUFS 이하: 사실상 무음. 소스 장비 점검

끝.

基于 VitePress 构建 · 部署于腾讯云 EdgeOne Pages