WebRTC 백엔드 아키텍처 및 오디오 처리 플로우 테스트용 실험 레포.
Signaling, RTP, STT 등 미디어 레이어 백엔드 구성 요소 검증 및 실습 목적.
-
video-conference
WebRTC 백엔드 (시그널링 + 미디어 처리) 테스트용 모듈 -
audio-processing
RTP 오디오 수신 → PCM 변환 → STT 처리 플로우 검증용 모듈
- WebRTC 백엔드 플로우 구현 (Signaling + Peer 연결 + Media 처리)
- Janus Gateway 연동 및 Redis 기반 Pub/Sub 구조 테스트
- WebRTC API
- Janus Gateway
- Redis Pub/Sub
- STUN/TURN (환경에 따라 적용)
- RTP 스트림 수신 → 오디오 데이터 디코딩 → 텍스트 변환(STT) 전체 플로우 테스트
- 디버깅 및 변환 결과 검증 목적
- Java
- Google Cloud STT API
- FFmpeg (오디오 디코딩 및 저장) / VOSK STT API
- Wireshark (RTP 분석)
- PCM/WAV 변환 로직
- Google Cloud STT 인증 키:
google_key.json
- Janus Gateway 설정 파일들 (janus.jcfg 등)
- FFmpeg (CLI 기반 오디오 디코딩)
- Wireshark (선택, 패킷 분석용)
video-conference 테스트를 위한 docker-compose
version: '3.8'
services:
janus-gateway:
image: 'canyan/janus-gateway:0.10.7'
command: ["/usr/local/bin/janus", "-F", "/usr/local/etc/janus"]
ports:
- "7088:7088"
- "8088:8088"
- "8188:8188"
volumes:
- "./janus/conf/janus.jcfg:/usr/local/etc/janus/janus.jcfg"
- "./janus/conf/janus.transport.http.jcfg:/usr/local/etc/janus/janus.transport.http.jcfg"
- "./janus/conf/janus.transport.websocket.jcfg:/usr/local/etc/janus/janus.transport.websocket.jcfg"
- "./janus/conf/janus.plugin.videoroom.jcfg:/usr/local/etc/janus/janus.plugin.videoroom.jcfg"
restart: always
networks:
- janus
janus_web:
image: httpd:alpine
ports:
- "8999:80"
volumes:
- ./janus/html:/usr/local/apache2/htdocs/
restart: always
networks:
- janus
redis:
image: redis:latest
container_name: redis
restart: always
ports:
- "6379:6379"
networks:
janus:
driver: bridge
# RTP 패킷 수신 → PCM 변환 → Google STT 호출
# 결과는 audio-processing/src/main/resources/result/stt_result.txt 에 저장
ffplay audio-processing/src/main/resources/result/debug_audio.wav
ffplay -i rtp://127.0.0.1:6000
ffmpeg -i audio-processing/src/main/resources/result/debug_audio.wav
Wireshark에서 다음 필터 적용:
udp.port == 6000
- 이 프로젝트는 WebRTC 백엔드 구성 요소의 처리 흐름을 실험하고, RTP 기반 미디어 수신 및 분석을 위한 실습 환경을 구성하기 위한 목적.
- 고로 실제 서비스 수준의 안정성보다는, 다양한 구조/조합을 빠르게 실험, 검증하는 데 초점.