**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.]( |
||
|---|---|---|
| .. | ||
| ffmpeg-4-fit | ||
| gperftools-2-fit | ||
| gprof | ||
| gtest-fit | ||
| httpx-static | ||
| libsrtp-2-fit | ||
| openssl-1.1-fit | ||
| patches | ||
| signaling | ||
| srs-bench | ||
| srs-docs | ||
| srt-1-fit | ||
| st-srs | ||
| openssl-OpenSSL_1_0_2u.tar.gz | ||
| opus-1.3.1.tar.gz | ||
| README.md | ||
http-parser-2.1.zip
- for srs to support http callback.
- https://github.com/nodejs/http-parser
- https://github.com/ossrs/http-parser
- https://ossrs.net/lts/zh-cn/license#http-parser
nginx-1.5.7.zip
- http://nginx.org/
- for srs to support hls streaming.
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
- http://www.openssl.org/source/openssl-1.1.0e.tar.gz
- openssl for SRS(with-ssl) RTMP complex handshake to delivery h264+aac stream.
- SRTP depends on openssl 1.0.*, so we use both ssl versions.
- https://ossrs.net/lts/zh-cn/license#openssl
libsrtp-2.3.0.tar.gz
- For WebRTC, SRTP to encrypt and decrypt RTP.
- https://github.com/cisco/libsrtp/releases/tag/v2.3.0
ffmpeg-4.2.tar.gz opus-1.3.1.tar.gz
- http://ffmpeg.org/releases/ffmpeg-4.2.tar.gz
- https://github.com/xiph/opus/releases/tag/v1.3.1
- To support RTMP/WebRTC transcoding.
- https://ossrs.net/lts/zh-cn/license#ffmpeg
gtest-fit
- google test framework.
- https://github.com/google/googletest/releases/tag/release-1.11.0
gperftools-2-fit
- gperf tools for performance benchmark.
- https://github.com/gperftools/gperftools/releases/tag/gperftools-2.9.1
st-srs st-1.9.zip state-threads state-threads-1.9.1.tar.gz
- Patched ST from https://github.com/ossrs/state-threads
- https://ossrs.net/lts/zh-cn/license#state-threads
JSON
USRSCTP
links:
- state-threads: https://github.com/ossrs/state-threads
- x264: ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20131129-2245-stable.tar.bz2
- lame: http://nchc.dl.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
- yasm: http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
- speex: http://downloads.xiph.org/releases/speex/speex-1.2rc1.tar.gz