Commit Graph

81 Commits

Author SHA1 Message Date
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
vivisoymilkhappy
57c74d1cdb
Add ignore configuration for cursor. v7.0.115 (#4547)
Cursor ignored.

---------

Co-authored-by: Haibo Chen <495810242@qq.com>
Co-authored-by: ZhangWei <zhangwei@jlsoft.com>
Co-authored-by: winlin <winlinvip@gmail.com>
2025-10-31 19:11:51 -04:00
OSSRS-AI
75d35b7817 AI: Ignore some code that is no need to cover. 2025-10-28 23:10:31 -04:00
Winlin
2384f3fb06
AI: Fix naming problem for app module. v7.0.85 (#4485)
Co-authored-by: OSSRS-AI <winlinam@gmail.com>
2025-09-12 19:44:43 -04:00
Winlin
5adf684f59
AI: Remove multi-threading support and change to single-thread architecture. v7.0.59 (#4445)
This PR removes the multi-threading infrastructure from SRS and
consolidates the codebase to use single-thread architecture exclusively.
This is a architectural simplification that aligns with SRS's
coroutine-based design philosophy.

* Simplified Architecture: Eliminates complexity of multi-threading
coordination
* Better Alignment: Matches SRS's coroutine-based single-thread design
philosophy
* Reduced Complexity: Removes potential race conditions and threading
bugs
* Cleaner Code: More focused modules with clear responsibilities
* Easier Maintenance: Fewer moving parts and clearer execution flow

---------

Co-authored-by: OSSRS-AI <winlinam@gmail.com>
2025-08-20 15:12:51 -06:00
Winlin
6e1134fe9b
Use clang format. v7.0.52 (#4433)
---------

Co-authored-by: ChenGH <chengh_math@126.com>
2025-08-11 23:19:19 -04:00
ChenGH
13597d1b7f
update copyright to 2025. v5.0.218 v6.0.159 v7.0.21 (#4271)
update copyright to 2025

---------

Co-authored-by: john <hondaxiao@tencent.com>
Co-authored-by: winlin <winlinvip@gmail.com>
2025-01-14 17:35:18 +08:00
winlin
2a2da2253f Switch to 2013-2024. v6.0.109 2024-01-01 10:51:24 +08:00
winlin
29eff1a242 Refine LICENSE. 2023-10-23 14:33:19 +08:00
winlin
c46ef81ff2 SRS5: Update license date to 2023. v5.0.123
PICK 72f8ed4916
2023-01-01 08:56:20 +08:00
Winlin
2d1ba46e37
Fix #3218: Log: Follow Java/log4j log level specs. v5.0.83 (#3219)
1. Support Java/log4j log level text.
2. Support configuring by `--log-new-level=on` which is enabled by default.
3. Support `--log-new-level=off` to use SRS 4.0 log level for compatibility.
2022-10-26 21:23:03 +08:00
winlin
e9915c3bd7 Log: Refine the log interface. v5.0.82 2022-10-25 09:20:55 +08:00
winlin
5ae495ab95 For #1229: Check the return value of vsnprintf. 2022-08-08 08:31:57 +08:00
winlin
e05535267b Disable reload for log config. 2022-06-29 19:29:50 +08:00
winlin
cb6a4d0143 Thread: Refine SrsThreadMutex and SrsThreadLocker. 2022-06-28 20:50:25 +08:00
winlin
d117145b95 Update date from 2021 to 2022. 2022-06-20 19:22:25 +08:00
winlin
0957cdb944 SRT: Refine the lock for log. 2022-06-14 20:05:11 +08:00
hondaxiao
910b5945af SRT: add srt log handle, srs log supoort multithread 2022-06-14 20:05:11 +08:00
winlin
d5c86dc5fa Switch LICENSE from MIT to **MIT or MulanPSL-2.0**. v5.0.21 2022-01-13 18:40:22 +08:00
Winlin
c8a1e0f3da
Refine AUTHORS.txt to AUTHORS.md, etc. 5.0.8 (#2464)
* Refine AUTHORS.txt to AUTHORS.md, etc. 5.0.8

* Update README.md

* Update README.md

* Refine format for AUTHORS.md
2021-07-08 14:30:47 +08:00
winlin
15901cacee SquashSRS4: Use SPDX-License-Identifier: MIT. 5.0.3 2021-05-31 13:42:20 +08:00
winlin
8b74c7cb89 SquashSRS4: Happy 2021 2021-04-16 09:29:43 +08:00
winlin
041abe43fa Log: Support large log for RTC SDP. 2020-07-12 19:52:03 +08:00
winlin
6624b8acca Log: Use object as context id for complex context 2020-07-05 23:26:55 +08:00
winlin
81d2e10f65 Refactor ISrsContext and ISrsLog 2020-06-25 13:14:59 +08:00
winlin
8a0c2e01f8 Log: Change cid from int to string 2020-06-18 11:45:43 +08:00
winlin
6c1067d56a Merge from 2.0 2020-01-09 10:20:49 +08:00
winlin
dd46a4f700 Fix #1554, support logrotate copytruncate. 2.0.272 2020-01-09 10:03:17 +08:00
winlin
c08b6f1961 Merge 2.0, support logrotate copytruncate. 3.0.96 2020-01-08 18:05:42 +08:00
winlin
731e87876e Fix #1554, support logrotate copytruncate. 2.0.271 2020-01-08 17:57:04 +08:00
Michael.Ma
459488bcf8 fix logrotate empty file hole issue (#1561)
* fix logrotate empty file hole issue
refer to https://github.com/ossrs/srs/issues/1554
2020-01-08 17:54:06 +08:00
winlin
d783a12f89 Happy 2020 2019-12-30 10:10:35 +08:00
winlin
78da67e8d1 For #1229, fix the security risk in logger. 3.0.69 2019-12-11 11:56:00 +08:00
winlin
b2d1d84634 Change to 2019 2019-01-01 21:37:28 +08:00
winlin
ca1395a807 Change date from 2017 to 2018 2018-01-07 10:58:53 +08:00
winlin
fd91df9411 For #913, reload use complex error 2017-09-22 16:14:30 +08:00
winlin
661eb8b37c For #913, use complex error for reload utc time 2017-07-29 20:02:38 +08:00
winlin
b5c14938d9 For #913, config and log support complex error. 2017-06-11 14:03:19 +08:00
winlin
1bf99e8f3e For #907, Wrap ST, only use in service ST. 2017-05-30 09:05:02 +08:00
winlin
ff822b55cd For #820, extract service module. 2017-03-26 10:16:21 +08:00
winlin
0a57a46016 Refine LICENSE 2017-03-25 21:29:29 +08:00
winlin
f32aab3d92 For #299, refine code. 2017-03-25 17:21:39 +08:00
winlin
5e419c66f8 For #299, add dash files. 2017-02-11 21:14:28 +08:00
winlin
7ac932cfa0 update to 2013-2017 2016-12-16 11:57:25 +08:00
winlin
2955b1fd2d support log rotate signal SIGUSR1. 3.0.8 2016-12-08 18:23:22 +08:00
winlin
09895fcfc2 Merge branch '2.0release' into develop 2016-09-09 11:03:39 +08:00
Star Brilliant
a164c90e28 Flush the stdout buffer after logging to console
Normally if the stdout is connected to a PTY, the stdout buffer is flushed automatically after each \n.
However if I run SRS under Docker, the stdout is not connected to a PTY (unless I ask it to), causing the last log line to be incomplete (showing only half).
By adding fflush, we could make sure each log line is completely shown, whenever the stdout is connected to a PTY or not.
2016-09-08 07:58:52 -05:00
winlin
0e9318e5d8 merge from 2.0 2016-09-05 14:16:24 +08:00
winlin
c7b97aa1c3 fix memory leak at source. 2.0.214 2016-09-05 14:13:37 +08:00
winlin
d0c74fa7cd update 2015 to 2016 2015-12-23 11:35:40 +08:00