mirror of
https://github.com/ossrs/srs.git
synced 2025-11-24 03:44:02 +08:00
**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>
47 lines
783 B
Plaintext
47 lines
783 B
Plaintext
# Compiled Object files
|
|
*.slo
|
|
*.lo
|
|
*.o
|
|
|
|
# Compiled Dynamic libraries
|
|
*.so
|
|
*.dylib
|
|
|
|
# Compiled Static libraries
|
|
*.lai
|
|
*.la
|
|
*.a
|
|
|
|
# by winlin
|
|
*.pyc
|
|
*.swp
|
|
.DS_Store
|
|
/trunk/Makefile
|
|
/trunk/objs
|
|
/trunk/src/build-qt-Desktop-Debug
|
|
/trunk/research/librtmp/objs
|
|
/trunk/3rdparty/ccache/ccache-3.1.9
|
|
/trunk/3rdparty/gprof/graphviz-2.36.0
|
|
/trunk/research/api-server/static-dir/forward
|
|
/trunk/research/api-server/static-dir/live
|
|
/trunk/research/api-server/static-dir/players
|
|
|
|
# Apple-specific garbage files.
|
|
.AppleDouble
|
|
|
|
.idea
|
|
.DS_Store
|
|
*.heap
|
|
*.exe
|
|
|
|
cmake-build-debug
|
|
/trunk/ide/srs_clion/CMakeCache.txt
|
|
/trunk/ide/srs_clion/CMakeFiles
|
|
/trunk/ide/srs_clion/Makefile
|
|
/trunk/ide/srs_clion/cmake_install.cmake
|
|
/trunk/ide/srs_clion/srs
|
|
/trunk/ide/srs_clion/Testing/
|
|
/trunk/ide/vscode-build
|
|
/build/
|
|
|