srs/trunk/3rdparty
Haibo Chen(陈海博) cbc98dc0d9
rtc2rtmp: Support RTC-to-RTMP remuxing with HEVC. v7.0.43 (#4349)
**Introduce**

This pull request builds upon the foundation laid in
https://github.com/ossrs/srs/pull/4289 . While the previous work solely
implemented unidirectional HEVC support from RTMP to RTC, this
submission further enhances it by introducing support for the RTC to
RTMP direction.

**Usage**

Launch SRS with `rtc2rtmp.conf`

```bash
./objs/srs -c conf/rtc2rtmp.conf
```

**Push with WebRTC**

Upgrade browser to Chrome(136+) or Safari(18+), then open [WHIP
encoder](http://localhost:8080/players/whip.html?schema=http&&codec=hevc),
push stream with URL that enables HEVC by query string `codec=hevc`:

```bash
http://localhost:1985/rtc/v1/whip/?app=live&stream=livestream&codec=hevc
```

This query string `codec=hevc` is used to select the video codec, and
generate lines in the answer SDP.

```
m=video 9 UDP/TLS/RTP/SAVPF 49 123
a=rtpmap:49 H265/90000
```

The encoder log also show the codec:

```
Audio: opus, 48000HZ, channels: 2, pt: 111
Video: H265, 90000HZ, pt: 49
```

**Play with RTMP**

Play HEVC stream via RTMP.

```bash
ffplay -i rtmp://localhost/live/livestream
```

You will see the codec in logs:

```
  Stream #0:0: Audio: aac (LC), 48000 Hz, stereo, fltp
  Stream #0:1: Video: hevc (Main), yuv420p(tv, bt709), 320x240, 30 fps, 30 tbr, 1k tbn
```

You can also use [WHEP
player](http://localhost:8080/players/whep.html?schema=http&&codec=hevc)
to play the stream.

Important refactor with AI:

* [AI: Refactor packet cache for RTC frame
builder.](b8ffa1630e)
* [AI: Refactor the packet copy and free for
SrsRtcFrameBuilder](f3487b45d7)
* [AI: Refactor the frame detector for
SrsRtcFrameBuilder](4ffc1526b9)
* [AI: Refactor the packet_video_rtmp for
SrsRtcFrameBuilder](81f6aef4ed)
* [AI: Add utests for
SrsCodecPayload.codec](61eb1c0bfc)
* [AI: Add utests for VideoPacketCache in
SrsRtcFrameBuilder.](fd25480dfa)
* [AI: Add utests for VideoFrameDetector in
SrsRtcFrameBuilder.](b4aa977bbd)
* [AI: Add regression test for RTC2RTMP with
HEVC.](5259a2aac3)

---------

Co-authored-by: Jacob Su <suzp1984@gmail.com>
Co-authored-by: winlin <winlinvip@gmail.com>
2025-07-03 08:24:42 -04:00
..
ffmpeg-4-fit SRS5: MP3: Support decode mp3 by FFmpeg natively. (#296) (#3340) 2022-12-26 18:06:38 +08:00
gperftools-2-fit Squash: Fix bugs 2021-12-26 17:30:51 +08:00
gprof Compress repository, remove gprof files. 2019-12-25 18:30:55 +08:00
gtest-fit UTest: Upgrade gtest to 1.11 and support clion. (#2970) 2022-03-17 16:56:52 +08:00
httpx-static update copyright to 2025. v5.0.218 v6.0.159 v7.0.21 (#4271) 2025-01-14 17:35:18 +08:00
libsrtp-2-fit RISCV: Patch ST and libsrtp. #3115 2022-07-20 21:53:39 +08:00
openssl-1.1-fit AppleM1: Update openssl to v1.1.1l 2022-08-14 22:46:51 +08:00
patches SRT: Log level to debug when no socket to accept. v5.0.180 v6.0.78 (#3696) 2023-09-21 15:10:23 +08:00
signaling update copyright to 2025. v5.0.218 v6.0.159 v7.0.21 (#4271) 2025-01-14 17:35:18 +08:00
srs-bench rtc2rtmp: Support RTC-to-RTMP remuxing with HEVC. v7.0.43 (#4349) 2025-07-03 08:24:42 -04:00
srs-docs AI: Add guide for Augment. (#4404) 2025-06-27 07:23:45 -04:00
srt-1-fit Upgrade libsrt to v1.5.3. v5.0.183 v6.0.81 (#3808) 2023-09-21 22:23:56 +08:00
st-srs Support custom deleter for SrsUniquePtr. (#4309) 2025-04-26 00:01:34 -04:00
openssl-OpenSSL_1_0_2u.tar.gz Revert part of 01d5e4da, to keep both openssl 1.0 and 1.1, because SRTP depends on 1.0 2020-04-03 14:03:57 +08:00
opus-1.3.1.tar.gz For #1659, #307, add opus codec library 2020-03-22 14:03:48 +08:00
README.md Upgrade libsrt to v1.5.3. v5.0.183 v6.0.81 (#3808) 2023-09-21 22:23:56 +08:00

http-parser-2.1.zip

nginx-1.5.7.zip

srt-1-fit srt-1.5.3.tar.gz

openssl-1.1-fit openssl-1.1.1l.tar.gz

openssl-1.1.0e.zip openssl-OpenSSL_1_0_2u.tar.gz

libsrtp-2.3.0.tar.gz

ffmpeg-4.2.tar.gz opus-1.3.1.tar.gz

gtest-fit

gperftools-2-fit

st-srs st-1.9.zip state-threads state-threads-1.9.1.tar.gz

JSON

USRSCTP

links: