srs/trunk/research
OSSRS-AI bfb91f9b82
AI: WebRTC: Support G.711 (PCMU/PCMA) audio codec for WebRTC. v7.0.124 (#4075) (#4568)
This PR adds G.711 (PCMU/PCMA) audio codec support for WebRTC in SRS,
enabling relay-only streaming of G.711 audio between WebRTC clients via
WHIP/WHEP. G.711 is a widely-used, royalty-free audio codec with
excellent compatibility across VoIP systems, IP cameras, and legacy
telephony equipment.

Fixes #4075

Many IP cameras, VoIP systems, and IoT devices use G.711 (PCMU/PCMA) as
their default audio codec. Previously, SRS only supported Opus for
WebRTC audio, requiring transcoding or rejecting G.711 streams entirely.
This PR enables direct relay of G.711 audio streams in WebRTC, similar
to how VP9/AV1 video codecs are supported.

Enhanced WHIP/WHEP players with URL-based codec selection:
```
# Audio codec only
http://localhost:8080/players/whip.html?acodec=pcmu
http://localhost:8080/players/whip.html?acodec=pcma

# Video + audio codecs
http://localhost:8080/players/whip.html?vcodec=vp9&acodec=pcmu
http://localhost:8080/players/whep.html?vcodec=h264&acodec=pcma

# Backward compatible (codec = vcodec)
http://localhost:8080/players/whip.html?codec=vp9
```

Testing

```bash
# Build and run unit tests
cd trunk
make utest -j && ./objs/srs_utest

# Test with WHIP player
# 1. Start SRS server
./objs/srs -c conf/rtc.conf

# 2. Open WHIP publisher with PCMU audio
http://localhost:8080/players/whip.html?acodec=pcmu

# 3. Open WHEP player to receive stream
http://localhost:8080/players/whep.html
```

## Related Issues

- Fixes #4075 - WebRTC G.711A Audio Codec Support
- Related to #4548 - VP9 codec support (similar relay-only pattern)
2025-11-09 12:08:03 -05:00
..
api-server Upgrade hls.js and set in low latency mode. v6.0.112 (#3924) 2024-02-05 21:37:29 +08:00
apm APM: Extract research to projects. 2022-09-19 13:30:22 +08:00
arm Merge 4.0release, migrate to new website. 2022-07-31 18:34:18 +08:00
code-statistic update copyright to 2025. v5.0.218 v6.0.159 v7.0.21 (#4271) 2025-01-14 17:35:18 +08:00
console Player: Fix empty img tag occupy 20px size in safari. v6.0.142 (#4029) 2024-07-24 11:20:56 +08:00
ffempty update copyright to 2025. v5.0.218 v6.0.159 v7.0.21 (#4271) 2025-01-14 17:35:18 +08:00
frame Update 2021-03-06 10:46:07 +08:00
golang refine srs player to play hls. 2016-03-19 19:11:31 +08:00
gperftools update copyright to 2025. v5.0.218 v6.0.159 v7.0.21 (#4271) 2025-01-14 17:35:18 +08:00
hls update copyright to 2025. v5.0.218 v6.0.159 v7.0.21 (#4271) 2025-01-14 17:35:18 +08:00
httpmock AI: Cover protocol HTTP/HTTPS/RTMP/RTC by utests. (#4493) 2025-09-16 22:21:07 -04:00
msg_zerocopy ST: Simplify it, only Linux/Darwin, epoll/kqueue, single process. 5.0.2 2021-05-19 18:25:49 +08:00
players AI: WebRTC: Support G.711 (PCMU/PCMA) audio codec for WebRTC. v7.0.124 (#4075) (#4568) 2025-11-09 12:08:03 -05:00
python-subprocess finish the research for python-subprocess 2014-06-11 11:14:43 +08:00
srt-proxy A demo for SRT proxy. (#3869) 2023-12-30 08:55:01 +08:00
st ASAN: Support coroutine context switching and stack tracing (#4153) 2024-08-22 17:12:39 +08:00
thread-model Research: Add udp connect 2021-02-05 11:07:53 +08:00
wireshark GB28181: Support GB28181-2016 protocol. v5.0.74 (#3201) 2022-10-06 17:40:58 +08:00
favicon.ico Upgrade hls.js and set in low latency mode. v6.0.112 (#3924) 2024-02-05 21:37:29 +08:00
index.html update copyright to 2025. v5.0.218 v6.0.159 v7.0.21 (#4271) 2025-01-14 17:35:18 +08:00