ZLMediaKit/server
Miau Lightouch a9e0e1a81e
Some checks failed
Android / build (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Docker / build (push) Has been cancelled
DockerPy / build (push) Has been cancelled
Linux / build (push) Has been cancelled
Linux_Python / build (push) Has been cancelled
macOS / build (push) Has been cancelled
macOS_Python / build (push) Has been cancelled
Windows / build (push) Has been cancelled
Windows_Python / build (push) Has been cancelled
fix(webrtc): fix GStreamer WHEP interop (#4720)
## Summary

This PR fixes GStreamer interoperability issues during WebRTC/WHEP
negotiation with ZLMediaServer.

GStreamer could fail to establish the connection for two separate
reasons:

1. ZLMediaServer generated a non-compliant ICE `ufrag`. The generated
value contained `_`, which is not a valid ICE character, so GStreamer
rejected the SDP.
2. ZLMediaServer did not correctly handle `bundle-only` offers and could
answer an accepted bundled m-line with `port=0`, which caused the later
WHEP negotiation to fail.

## Changes

- Generate ICE `ufrag` values using ICE-compliant characters only.
- Preserve and handle `a=bundle-only` correctly during SDP parsing and
answer generation.
- Return `port=9` instead of `port=0` for accepted bundled m-lines.
- Add regression coverage for `bundle-only` SDP handling.
- URL-encode `delete_webrtc` query parameters in the returned `Location`
header so ICE-safe identifiers remain round-trippable over HTTP.

## Validation

- Built with WebRTC and SCTP enabled.
- Added regression test: `test_webrtc_regression`
- Verified:
  - ICE-safe identifier round-trip through `delete_webrtc`
  - `bundle-only` SDP answer generation
2026-04-21 11:37:08 +08:00
..
CMakeLists.txt fix: windows下通过mingw编译报错 (#4617) 2026-01-03 23:11:45 +08:00
FFmpegSource.cpp Add exception handling for FFmpeg cmd checked. (#4343) 2025-07-10 14:14:57 +08:00
FFmpegSource.h Optimize the code related to decoding and screenshot (#4106) 2025-01-19 20:18:32 +08:00
main.cpp 新增支持Python混合编程模式 (#4579) 2026-02-10 13:28:42 +08:00
Process.cpp ffmpeg命令行支持shell语法 2025-08-23 11:54:58 +08:00
Process.h release 8.0 2023-12-09 16:23:51 +08:00
pyinvoker.cpp 新增更新流代理的功能,支持修改已有拉流代理的URL和参数 2026-03-20 21:59:55 +08:00
pyinvoker.h 新增支持Python混合编程模式 (#4579) 2026-02-10 13:28:42 +08:00
ShellParser.h ffmpeg命令行支持shell语法 2025-08-23 11:54:58 +08:00
System.cpp 解决在window mingw 5.3环境下编译出现报错信息 (#4710) 2026-04-11 09:39:35 +08:00
System.h release 8.0 2023-12-09 16:23:51 +08:00
VideoStack.cpp feat: VideoStack支持等比缩放 (#4191) 2025-03-19 09:42:57 +08:00
VideoStack.h feat: VideoStack支持等比缩放 (#4191) 2025-03-19 09:42:57 +08:00
WebApi.cpp fix(webrtc): fix GStreamer WHEP interop (#4720) 2026-04-21 11:37:08 +08:00
WebApi.h 新增更新流代理的功能,支持修改已有拉流代理的URL和参数 2026-03-20 21:59:55 +08:00
WebHook.cpp 新增add_stream_proxy python接口 2026-03-18 18:47:18 +08:00
WebHook.h AI automatically translates all comments in the code into English (#3917) 2024-09-19 14:53:50 +08:00