Skip to content

Commit 1c94eb4

Browse files
committed
feat: add support for Huawei FCC variant
1 parent 5e2c4a4 commit 1c94eb4

File tree

15 files changed

+1014
-252
lines changed

15 files changed

+1014
-252
lines changed

docs/fcc-setup.md

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,34 +45,65 @@ FCC (Fast Channel Change) 是运营商级的快速换台协议,可实现毫秒
4545
### 在 URL 中指定 FCC 服务器
4646

4747
```url
48-
http://服务器地址:端口/rtp/组播地址:端口?fcc=FCC服务器IP:端口
48+
http://服务器地址:端口/rtp/组播地址:端口?fcc=FCC服务器IP:端口[&fcc-type=协议类型]
4949
```
5050

5151
**示例**
5252

5353
```url
54+
# 电信 FCC(自动判断)
5455
http://192.168.1.1:5140/rtp/239.253.64.120:5140?fcc=10.255.14.152:15970
56+
57+
# 华为 FCC(自动判断)
58+
http://192.168.1.1:5140/rtp/239.253.64.120:5140?fcc=10.255.14.152:8027
59+
60+
# 手动指定华为 FCC 协议
61+
http://192.168.1.1:5140/rtp/239.253.64.120:5140?fcc=10.255.14.152:8027&fcc-type=huawei
62+
63+
# 手动指定电信 FCC 协议
64+
http://192.168.1.1:5140/rtp/239.253.64.120:5140?fcc=10.255.14.152:15970&fcc-type=telecom
5565
```
5666

67+
#### fcc-type 参数说明
68+
69+
- **telecom**:强制使用电信/中兴/烽火 FCC 协议
70+
- **huawei**:强制使用华为 FCC 协议
71+
- **不指定**:根据端口自动判断(8027 为华为,其他为电信)
72+
73+
大多数情况下不需要手动指定 `fcc-type`,rtp2httpd 会根据端口自动选择正确的协议。仅在以下情况需要手动指定:
74+
75+
- FCC 服务器使用了非标准端口
76+
- 自动判断的协议类型不正确
77+
5778
### 在 M3U 中配置 FCC
5879

5980
如果使用 M3U 播放列表,可以在每个频道的 URL 中添加 FCC 参数:
6081

6182
```m3u
6283
#EXTM3U
63-
#EXTINF:-1,CCTV-1
84+
#EXTINF:-1,CCTV-1(电信 FCC)
6485
http://192.168.1.1:5140/rtp/239.253.64.120:5140?fcc=10.255.14.152:15970
65-
#EXTINF:-1,CCTV-2
66-
http://192.168.1.1:5140/rtp/239.253.64.121:5140?fcc=10.255.14.152:15970
86+
#EXTINF:-1,CCTV-2(华为 FCC)
87+
http://192.168.1.1:5140/rtp/239.253.64.121:5140?fcc=10.255.14.152:8027
6788
```
6889

6990
## NAT 穿透配置
7091

71-
如果 rtp2httpd 运行在路由器后面的设备上(如 NAS、PC 等),并且上级路由器负责接入 IPTV 网络,则需要配置端口转发,FCC 才可以正常工作。
92+
### 华为 FCC 协议的 NAT 穿透支持
93+
94+
**华为 FCC 协议原生支持 NAT 穿透**,无需额外配置端口转发即可在 NAT 后面正常工作。
95+
96+
华为 FCC 协议只在华为 IPTV 平台下可以使用。
97+
98+
### 电信 FCC 协议的 NAT 穿透配置
99+
100+
如果使用电信/中兴/烽火 FCC 协议,且 rtp2httpd 运行在路由器后面的设备上(如 NAS、PC 等),并且上级路由器负责接入 IPTV 网络,则需要配置端口转发,FCC 才可以正常工作。
101+
102+
基本上所有 IPTV 平台(包括华为)都支持电信 FCC 协议。
72103

73104
此外,你也需要配置 IGMP / 组播转发(`igmpproxy` / `omcproxy`),才能正常接收组播流。
74105

75-
### 配置方法
106+
#### 配置方法
76107

77108
请先手动指定 `--fcc-listen-port-range`
78109

@@ -87,6 +118,8 @@ fcc-listen-port-range = 40000-40100
87118

88119
然后需要在上级路由器配置端口转发,将这个端口范围(例如 `40000-40100`)转发到运行 rtp2httpd 的设备。
89120

121+
> **提示**:如果你的环境需要 NAT 穿透,且 FCC 服务器同时支持两种协议,建议优先使用华为 FCC 协议(端口 8027),可以省去端口转发配置。
122+
90123
## 测试 FCC 是否工作
91124

92125
1. **使用起播较快播放器**:确保播放器本身起播速度足够快,不能成为瓶颈

docs/url-formats.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,26 @@ rtp2httpd 支持多种流媒体协议,通过不同的 URL 前缀进行区分
55
## 组播 RTP 流转换
66

77
```url
8-
http://服务器地址:端口/rtp/组播地址:端口[?fcc=FCC服务器:端口]
8+
http://服务器地址:端口/rtp/组播地址:端口[?fcc=FCC服务器:端口][&fcc-type=协议类型]
99
```
1010

1111
**示例**
1212

1313
```url
1414
http://192.168.1.1:5140/rtp/239.253.64.120:5140
1515
http://192.168.1.1:5140/rtp/239.253.64.120:5140?fcc=10.255.14.152:15970
16+
http://192.168.1.1:5140/rtp/239.253.64.120:5140?fcc=10.255.14.152:8027&fcc-type=huawei
1617
```
1718

1819
### 参数说明
1920

2021
- **组播地址**:IPTV 运营商提供的组播地址
2122
- **端口**:组播端口号
2223
- **fcc**(可选):FCC 快速换台服务器地址,格式为 `IP:端口`
24+
- **fcc-type**(可选):FCC 协议类型,可选值:
25+
- `telecom`:电信/中兴/烽火 FCC 协议(默认)
26+
- `huawei`:华为 FCC 协议
27+
- 未指定时根据 FCC 端口自动判断:`8027` 为华为,其他为电信
2328

2429
### 使用场景
2530

src/Makefile.am

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ rtp2httpd_SOURCES = \
1212
rtp.c \
1313
multicast.c \
1414
fcc.c \
15+
fcc_telecom.c \
16+
fcc_huawei.c \
1517
stream.c \
1618
rtsp.c \
1719
snapshot.c \
@@ -37,6 +39,8 @@ noinst_HEADERS = \
3739
rtp.h \
3840
multicast.h \
3941
fcc.h \
42+
fcc_telecom.h \
43+
fcc_huawei.h \
4044
stream.h \
4145
rtsp.h \
4246
snapshot.h \

0 commit comments

Comments
 (0)