logo

English

WebRTC의 RED Audio Codec에 대해서

by digipine posted Apr 15, 2024
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
WebRTC에서 오디오 전송을 위한 코덱(Codec)은 OPUS, G733, PCMA, PCMU등 여러가지 있습니다. 하지만 스테레오로 음악과 같은 고품질의 오디오를 전송하기 위한 포맷은 OPUS가 유일합니다.
OPUS는 압축율도 좋고 저지연(Low Latency)로 동작해면서도 음질이 비교적으로 좋은 편입니다. Speex를 계승하는 코덱이며 VoIP 용도로 개발된 코덱이지만 음악의 저장이나 스트리밍에서도 탁월한 성능을 발휘하는 것을 알려져 있지요.
스펙은 RFC6716에 완전히 공개되어 있습니다.
WebRTC의 대부분의 실시간 오디오 전송과 같이 UDP 방식으로 전송됩니다. Latency를 줄이는 것에는 성공적이지만 네트워크 상황이 나빠지면 패킷이 손실되어 재생이 끊기는 현상이 발생할 수 밖에는 없습니다.
OPUS에서는 이런 무제를 해결하기 위해서 FEC(Forward Error Correction)이라는 것을 사용하고 있습니다.
FEC는 미디어 패킷이 복제되어 지연 없이 네트워크를 통해 여러 번 전송되는 메커니즘입니다. 이는 일부 패킷이 수신되지 않더라도 미디어 스트림이 여전히 적절하게 구문 분석되고 디코딩될 수 있음을 의미합니다. 이는 전송 중에 손실된 패킷이 여러 번 전송되었다고 가정합니다.
FEC는 WebRTC에 다양한 방식으로 존재합니다.
1. Opus 음성 코덱 구현의 일부로
2. 각 오디오 프레임이 두 번 이상 전송될 수 있는 오디오용 중복 코딩
 
이런 기능을 독립적인 코덱으로 만든 것이 RED(REDundant Coding)라는 것으로 중복 오디오 또는 비디오 데이터를 인코딩하기 위해 RFC 2198 에 정의된 RTP 페이로드 형식 입니다 .
 
RED의 사용은 추가 페이로드 유형으로 SDP 에서 협상되며 , 오디오/비디오 RTP 패킷이 사용되면 실제 오디오/비디오 패킷을 전달하는 기본 및 보조 페이로드 앞에 6바이트 헤더가 있는 RED 형식을 사용하여 패키징됩니다. 
 
WebRTC의 관점에서 RED는 패킷 손실에 대처하는 오디오 재생의 유연성을 높이는 데 사용될 수 있습니다 . 수년 동안 WebRTC는 패킷 손실 복원력을 제공하기 위해 Opus에 내장된 내부 전달 오류 수정 기능에 의존했습니다. 결과는 유의미했지만 만족할 만한 수준은 아니었습니다. 이를 개선하기 위해 개발자는 RED를 보조 메커니즘으로 사용하여 유연성을 강화하는 방법을 모색했습니다. ULPFEC 정보로 이를 구현합니다.(아래 내용 참조)
 
여기에는 두 가지 반대 의견이 있습니다.
 
1. FEC는 가능한 한 적은 추가 비트 전송률을 사용하여 지능적인 방식으로 수행되어야 합니다.
2. RED와 같은 "무차별 대입" 솔루션은 비트레이트가 비싼 경우에도 유용합니다.
 
이로 인해 WebRTC는 실제로 RED를 "즉시" 지원하지 않고 구현자가 미디어 서버 및 삽입 가능한 스트림을 사용하여 이를 추가할 수 있도록 합니다 . RED를 채택하는 사람들은 비트 전송률이 오디오 비트 전송률의 두 배 또는 세 배가 된다는 점을 이해하고 있습니다. 이는 화상 통화에서 비디오 스트림의 비트 전송률 요구 사항에 비해 여전히 상당히 낮습니다.
 
중복된 정보를 처리하는 스키마 ULPFEC는 다음과 같습니다.
 
 
ULPFEC (Uneven Level Protection Forward Error Correction)
 
ULPFEC는 불균등 레벨 보호 순방향 오류 수정(Uneven Level Protection Forward Error Correction)을 나타냅니다. 오디오 및 비디오 패킷 손실을 복구하기 위해 WebRTC에 포함된 솔루션 중 하나입니다.
 
FEC(Forward Error Correction)는 다음 패킷에 RTP 패킷 에 대한 중복 정보를 포함하여 구성됩니다 . 이렇게 하면 패킷 중 하나가 손실된 경우 재전송 없이 다음 패킷에서 수신된 정보에서 데이터를 복구할 수 있습니다. 따라서 재전송이 필수인 높은 대기시간이나 실시간 요청 가능한 네트워크에 특히 적합합니다.
 
요즘에는 Opus FEC, ULPFEC 및 FlexFEC(플래그 뒤에 비활성화됨)를 포함하여 WebRTC 클라이언트 내부에 다양한 정방향 오류 수정 구현이 있습니다 . 이러한 스키마는 SDP 제안/응답 교환 에서 협상됩니다 .
 
ULPFEC는 RFC 5109 에 정의되어 있으며 여러 패킷에 걸쳐 XOR을 사용하여 이 중복 정보를 생성하고 필요한 경우 수신기 측에서 손실된 패킷을 복구할 수 있습니다. ULPFEC는 보호되는 바이트의 양과 XOR이 적용되는 이전 패킷의 수를 선택하여 다양한 패킷에 대해 다양한 수준의 보호를 제공하는 기능을 갖추고 있습니다.
 
WebRTC의 경우 ULPFEC 정보는 RED 형식을 사용하여 RTP 패킷에 포함되어 전송됩니다.
TAG •
  • ?
    digipine 2024.04.15 19:31
    m=audio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 13 110 126
    c=IN IP4 0.0.0.0
    a=rtcp:9 IN IP4 0.0.0.0
    a=ice-ufrag:xS0S
    a=ice-pwd:+fCtoLnvriNN2qxg5DnlObG4
    a=ice-options:trickle
    a=fingerprint:sha-256 48:46:F4:3F:64:81:67:7B:B2:35:41:1E:11:82:51:51:D3:4B:2A:07:9D:22:77:9A:14:20:0E:C3:B3:93:88:F2
    a=setup:actpass
    a=mid:0
    a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
    a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
    a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
    a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
    a=recvonly
    a=rtcp-mux
    a=rtpmap:111 opus/48000/2
    a=rtcp-fb:111 transport-cc
    a=fmtp:111 minptime=10;useinbandfec=1
    a=rtpmap:63 red/48000/2
    a=fmtp:63 111/111
    a=rtpmap:9 G722/8000
    a=rtpmap:0 PCMU/8000
    a=rtpmap:8 PCMA/8000
    a=rtpmap:13 CN/8000
    a=rtpmap:110 telephone-event/48000
    a=rtpmap:126 telephone-event/8000

List of Articles
No. Subject Author Date Views
27 AMP의 설계 방식 - Class A 방식의 앰프 digipine 2017.11.02 1237
26 De-emphasis 개념 정리 file digipine 2017.11.13 2596
25 DSD 음악 파일에 관한 기술 정보 file digipine 2017.11.02 1634
24 FFMpeg에서 DOP (DSD-over-PCM) 구현 패치 엉뚱도마뱀 2018.12.20 4223
23 LDAC 코덱으로 블루투스 고음질 음원 재생 file digipine 2017.11.02 908
22 OP AMP 기본 개념과 NE5532 자료 file digipine 2017.11.02 652
21 OP Amp 타입과 종류 정리 digipine 2017.11.02 2948
20 OP Amp의 음색 정리 자료 1 digipine 2017.11.02 9195
19 PCM Volume Control 구현 방법 digipine 2022.04.13 634
18 Phono Amp DIY kit digipine 2023.10.31 201
17 Sample mp3 files for test file digipine 2022.11.25 331
16 Semibreve DA10S DAC with Amanero USB Module 2 file lizard2019 2024.05.10 23
15 Test mp3 music files file digipine 2021.01.24 894
14 TEST용 동영상 모음 01 file digipine 2020.08.26 259
13 TEST용 동영상 모음 02 file digipine 2020.08.26 202
12 TEST용 동영상 모음 03 file digipine 2020.08.26 394
» WebRTC의 RED Audio Codec에 대해서 1 digipine 2024.04.15 32
10 벨소리 : 이시은 - 바람처럼 떠나버린 너 file lizard2019 2019.05.20 590
9 사운드 전용, 통신 채널인 I2S 스펙 file digipine 2017.11.02 9504
8 소음 dB 측정 방법 file lizard2019 2020.05.25 1608
Board Pagination Prev 1 2 Next
/ 2