ossrs / srs-gb28181

GB28181 server based on SRS
https://ossrs.net
MIT License
83 stars 41 forks source link

GB28181: pc通过gb28181 推流到edge端,edge通过origin-cluster方式,把流转发到origin端出错失败 #2569 #15

Open winlinvip opened 2 years ago

winlinvip commented 2 years ago

描述(Description)

ipc通过gb28181 推流到edge端,edge通过origin-cluster方式,把流转发到origin端出错失败;如果是直接用obs推rtmp流到edge端,再转发到origin端是可以的;另外如果ipc通过gb28181推流到edge,edge端用forward方式转发流到origin端也是可以的。

  1. SRS版本(Version): feature/gb28181
  2. SRS的日志如下(Log):

    2.1 edge端日志

    
    [2021-09-01 15:07:05.461][Trace][75445][1i80k325] Startup query id=36d027b80af311ec9a898d4ec9d38d78, eip=30.86.211.78, wait=427s
    [2021-09-01 15:07:05.461][Trace][75445][58059mfc] GB28181: connection manager run, conns=0
    [2021-09-01 15:07:05.461][Trace][75445][55w80771] TCP: connection manager run, conns=0
    [2021-09-01 15:07:05.461][Warn][75445][9o691867][55] set SO_SNDBUF failed, expect=10485760, r0=-1
    [2021-09-01 15:07:05.461][Warn][75445][9o691867][55] set SO_RCVBUF failed, expect=10485760, r0=-1
    [2021-09-01 15:07:05.461][Trace][75445][9o691867] UDP #11 LISTEN at 0.0.0.0:8000, SO_SNDBUF(default=9216, expect=10485760, actual=9216, r0=-1), SO_RCVBUF(default=786896, expect=10485760, actual=786896, r0=-1)
    [2021-09-01 15:07:05.461][Trace][75445][9jsud283] RTC: connection manager run, conns=0
    [2021-09-01 15:07:10.449][Trace][75445][f11h5475] Hybrid cpu=0.00%,0MB
    [2021-09-01 15:07:15.452][Trace][75445][f11h5475] Hybrid cpu=0.00%,0MB
    [2021-09-01 15:07:20.452][Trace][75445][f11h5475] Hybrid cpu=0.00%,0MB, cid=1,1, timer=56,0,0, clock=0,6,35,1,0,0,0,0,0
    [2021-09-01 15:07:25.455][Trace][75445][f11h5475] Hybrid cpu=0.00%,0MB, cid=1,1, timer=56,0,0, clock=0,6,35,1,0,0,0,0,0
    [2021-09-01 15:07:30.458][Trace][75445][f11h5475] Hybrid cpu=0.00%,0MB, cid=1,1, timer=56,0,0, clock=0,6,35,1,0,0,0,0,0
    [2021-09-01 15:07:34.634][Trace][75445][i8033254] HTTP #0 127.0.0.1:63064 GET http://127.0.0.1:1985/api/v1/gb28181?action=create_channel&id=1630480054606&stream=0289575&ssrc=0289575&port_mode=fixed&app=live, content-length=-1
    [2021-09-01 15:07:34.634][Trace][75445][i8033254] gb28181: generate ssrc id=1630480054606, ssrc=6010628
    [2021-09-01 15:07:34.634][Trace][75445][i8033254] new source, stream_url=/live/0289575
    [2021-09-01 15:07:34.634][Trace][75445][i8033254] new source, stream_url=/live/0289575
    [2021-09-01 15:07:34.636][Trace][75445][i8033254] RTC bridge from RTMP, discard_aac=0, discard_bframe=1, merge_nalus=0
    [2021-09-01 15:07:34.636][Trace][75445][i8033254] ignore disabled exec for vhost=
    [2021-09-01 15:07:34.636][Trace][75445][i8033254] gb28181: create new stream channel id:1630480054606 rtmp url=rtmp://127.0.0.1:1935/live/0289575
    [2021-09-01 15:07:34.791][Trace][75445][00q9s0a5] RTMP client ip=127.0.0.1:63065, fd=13
    [2021-09-01 15:07:34.793][Trace][75445][00q9s0a5] complex handshake success
    [2021-09-01 15:07:34.793][Trace][75445][00q9s0a5] connect app, tcUrl=rtmp://127.0.0.1:1935/live, pageUrl=, swfUrl=, schema=rtmp, vhost=127.0.0.1, port=1935, app=live, args=null
    [2021-09-01 15:07:34.793][Trace][75445][00q9s0a5] protocol in.buffer=0, in.ack=0, out.ack=0, in.chunk=128, out.chunk=128
    [2021-09-01 15:07:34.793][Trace][75445][00q9s0a5] ignore AMF0/AMF3 command message.
    [2021-09-01 15:07:34.794][Trace][75445][00q9s0a5] ignore AMF0/AMF3 command message.
    [2021-09-01 15:07:34.794][Trace][75445][00q9s0a5] client identified, type=rtmp-play, vhost=127.0.0.1, app=live, stream=06010628, param=, duration=-1ms
    [2021-09-01 15:07:34.794][Trace][75445][00q9s0a5] connected stream, tcUrl=rtmp://127.0.0.1:1935/live, pageUrl=, swfUrl=, schema=rtmp, vhost=__defaultVhost__, port=1935, app=live, stream=06010628, param=, args=null
    [2021-09-01 15:07:34.794][Trace][75445][00q9s0a5] new source, stream_url=/live/06010628
    [2021-09-01 15:07:34.794][Trace][75445][00q9s0a5] source url=/live/06010628, ip=127.0.0.1, cache=1, is_edge=1, source_id=/
    [2021-09-01 15:07:34.794][Trace][75445][00q9s0a5] ignore disabled exec for vhost=__defaultVhost__
    [2021-09-01 15:07:34.794][Trace][75445][00q9s0a5] http: mount flv stream for sid=/live/06010628, mount=/live/06010628.flv
    [2021-09-01 15:07:34.794][Trace][75445][00q9s0a5] dispatch cached gop success. count=0, duration=-1
    [2021-09-01 15:07:34.794][Trace][75445][00q9s0a5] create consumer, active=1, queue_size=0.00, jitter=30000000
    [2021-09-01 15:07:34.794][Trace][75445][00q9s0a5] set fd=13, SO_SNDBUF=146988=>87500, buffer=350ms
    [2021-09-01 15:07:34.794][Trace][75445][00q9s0a5] start play smi=0ms, mw_sleep=350, mw_msgs=8, realtime=0, tcp_nodelay=0
    [2021-09-01 15:07:34.806][Trace][75445][00q9s0a5] update source_id=f0t9ca24/00q9s0a5
    [2021-09-01 15:07:34.833][Trace][75445][f0t9ca24] complex handshake success.
    [2021-09-01 15:07:34.834][Trace][75445][f0t9ca24] protocol in.buffer=0, in.ack=0, out.ack=0, in.chunk=128, out.chunk=128
    [2021-09-01 15:07:34.873][Trace][75445][f0t9ca24] connected, version=4.0.126.0, ip=192.168.140.112, pid=8736, id=0, dsu=1
    [2021-09-01 15:07:34.887][Trace][75445][f0t9ca24] edge-pull publish url rtmp://47.103.61.38:1935/live/06010628, stream=06010628 as 06010628
    [2021-09-01 15:07:34.887][Trace][75445][f0t9ca24] edge change from 100 to state 101 (pull).
    [2021-09-01 15:07:34.900][Warn][75445][f0t9ca24][54] origin disconnected, retry, error code=1007 : recv message : recv interlaced message : read basic header : basic header requires 1 bytes : read bytes : read
    thread [75445][f0t9ca24]: ingest() [src/app/srs_app_edge.cpp:568][errno=54]
    thread [75445][f0t9ca24]: recv_message() [src/protocol/srs_rtmp_stack.cpp:372][errno=54]
    thread [75445][f0t9ca24]: recv_interlaced_message() [src/protocol/srs_rtmp_stack.cpp:859][errno=54]
    thread [75445][f0t9ca24]: read_basic_header() [src/protocol/srs_rtmp_stack.cpp:954][errno=54]
    thread [75445][f0t9ca24]: grow() [src/protocol/srs_protocol_stream.cpp:162][errno=54]
    thread [75445][f0t9ca24]: read() [src/protocol/srs_service_st.cpp:522][errno=54]
    [2021-09-01 15:07:35.218][Trace][75445][3qrd10e0] <- GBS gb28181: client_id , peer(30.86.208.21, 62356) ps rtp packet 1412B, age=29771086, vt=2/96, sts=0/3600/0x5bb704, paylod=1400B
    [2021-09-01 15:07:35.218][Trace][75445][3qrd10e0] RTP: jitbuffer VerifyAndAllocate:newSize:30000, prevBuffer:0, _buffer:587253248
    [2021-09-01 15:07:35.218][Trace][75445][3qrd10e0] RTP: jitbuffer VerifyAndAllocate:newSize:30000, prevBuffer:0, _buffer:553751552
    [2021-09-01 15:07:35.278][Trace][75445][3qrd10e0] RTP: jitbuffer VerifyAndAllocate:newSize:30000, prevBuffer:0, _buffer:587283456
    [2021-09-01 15:07:35.279][Trace][75445][3qrd10e0] RTP: jitbuffer VerifyAndAllocate:newSize:30000, prevBuffer:0, _buffer:570577920
    [2021-09-01 15:07:35.348][Trace][75445][3qrd10e0] RTP: jitbuffer VerifyAndAllocate:newSize:30000, prevBuffer:0, _buffer:587313664
    [2021-09-01 15:07:35.398][Trace][75445][3qrd10e0] RTP: jitbuffer VerifyAndAllocate:newSize:30000, prevBuffer:0, _buffer:587343872
    [2021-09-01 15:07:35.399][Trace][75445][3qrd10e0] RTP: jitbuffer VerifyAndAllocate:newSize:30000, prevBuffer:0, _buffer:578900480
2.2 origin端日志

srs checking config... [2021-09-01 15:07:19.960][Trace][8736][2kd18o20] ips, iface[0] eth0 ipv4 0x11043 192.168.140.112 [2021-09-01 15:07:19.960][Trace][8736][2kd18o20] devices, intranet eth0 192.168.140.112 [2021-09-01 15:07:19.960][Warn][8736][2kd18o20][22] stats network use index=0, ip=192.168.140.112, ifname=eth0 [2021-09-01 15:07:19.960][Warn][8736][2kd18o20][22] stats disk not configed, disk iops disabled. [2021-09-01 15:07:19.960][Trace][8736][2kd18o20] write log to console [2021-09-01 15:07:19.960][Trace][8736][2kd18o20] features, rch:on, dash:on, hls:on, hds:off, srt:off, hc:on, ha:on, hs:on, hp:on, dvr:on, trans:on, inge:on, stat:on, sc:on [2021-09-01 15:07:19.960][Trace][8736][2kd18o20] SRS on amd64 x86_64, conf:conf/test.conf, limit:1000, writev:1024, encoding:little-endian, HZ:100 [2021-09-01 15:07:19.960][Trace][8736][2kd18o20] mw sleep:350ms. mr enabled:on, default:0, sleep:350ms [2021-09-01 15:07:19.960][Trace][8736][2kd18o20] gc:on, pq:30000ms, cscc:[0,16), csa:on, tn:on(may hurts performance), ss:auto(guess by merged write) [2021-09-01 15:07:19.960][Trace][8736][2kd18o20] system default latency(ms): mw(0-350) + mr(0-350) + play-queue(0-30000) [2021-09-01 15:07:19.960][Warn][8736][2kd18o20][22] SRS/4.0.126 is not stable [2021-09-01 15:07:19.963][Trace][8736][2kd18o20] fingerprint=DE:C7:FE:62:05:26:64:7E:39:D2:33:C1:95:D8:9D:1A:94:C0:CB:1A:D3:AD:2A:07:C8:C5:A3:0B:79:58:1D:41 [2021-09-01 15:07:19.963][Trace][8736][2kd18o20] CircuitBreaker: enabled=1, high=2x90, critical=1x95, dying=5x99 [2021-09-01 15:07:19.963][Trace][8736][2kd18o20] http flv live stream, vhost=defaultVhost, mount=[vhost]/[app]/[stream].flv [2021-09-01 15:07:19.963][Trace][8736][2kd18o20] http: root mount to ./objs/nginx/html [2021-09-01 15:07:19.963][Trace][8736][2kd18o20] server main cid=2kd18o20, pid=8736, ppid=8539, asprocess=0 [2021-09-01 15:07:19.963][Trace][8736][2kd18o20] write pid=8736 to ./objs/origin.cluster.serverA.pid success! [2021-09-01 15:07:19.963][Trace][8736][2kd18o20] RTMP listen at tcp://0.0.0.0:1935, fd=7 [2021-09-01 15:07:19.963][Trace][8736][2kd18o20] HTTP-API listen at tcp://0.0.0.0:9090, fd=8 [2021-09-01 15:07:19.964][Trace][8736][2kd18o20] HTTP-Server listen at tcp://0.0.0.0:8080, fd=9 [2021-09-01 15:07:19.965][Trace][8736][2kd18o20] UDP #10 LISTEN at 0.0.0.0:9000, SO_SNDBUF(default=212992, expect=10485760, actual=425984, r0=0), SO_RCVBUF(default=212992, expect=10485760, actual=425984, r0=0) [2021-09-01 15:07:19.965][Trace][8736][2kd18o20] GB28181-Stream over RTP listen at udp://0.0.0.0:9000, fd=10 [2021-09-01 15:07:19.965][Trace][8736][2kd18o20] signal installed, reload=1, reopen=10, fast_quit=15, grace_quit=3 [2021-09-01 15:07:19.965][Trace][8736][2kd18o20] http: api mount /console to ./objs/nginx/html/console [2021-09-01 15:07:19.965][Trace][8736][2kd18o20] rtc listen at udp://0.0.0.0:8000, fd=11 [2021-09-01 15:07:19.965][Trace][8736][962m0yoe] Hybrid cpu=0.00%,10MB [2021-09-01 15:07:19.965][Trace][8736][064n8425] GB28181: connection manager run, conns=0 [2021-09-01 15:07:19.965][Trace][8736][282f7jrt] TCP: connection manager run, conns=0 [2021-09-01 15:07:19.966][Trace][8736][8jin8y05] UDP #11 LISTEN at 0.0.0.0:8000, SO_SNDBUF(default=212992, expect=10485760, actual=425984, r0=0), SO_RCVBUF(default=212992, expect=10485760, actual=425984, r0=0) [2021-09-01 15:07:19.966][Trace][8736][ckpfu910] RTC: connection manager run, conns=0 [2021-09-01 15:07:24.959][Trace][8736][962m0yoe] Hybrid cpu=0.00%,10MB [2021-09-01 15:07:29.959][Trace][8736][962m0yoe] Hybrid cpu=0.00%,10MB [2021-09-01 15:07:34.827][Trace][8736][s6916b65] RTMP client ip=122.192.73.142:63066, fd=12 [2021-09-01 15:07:34.842][Trace][8736][s6916b65] complex handshake success [2021-09-01 15:07:34.855][Trace][8736][s6916b65] connect app, tcUrl=rtmp://47.103.61.38/live, pageUrl=, swfUrl=, schema=rtmp, vhost=47.103.61.38, port=1935, app=live, args=(obj) [2021-09-01 15:07:34.855][Trace][8736][s6916b65] edge-srs ip=30.86.211.78, version=5.0.11, pid=75445, id=0 [2021-09-01 15:07:34.855][Trace][8736][s6916b65] protocol in.buffer=0, in.ack=0, out.ack=0, in.chunk=128, out.chunk=128 [2021-09-01 15:07:34.894][Trace][8736][s6916b65] client identified, type=Play, vhost=47.103.61.38, app=live, stream=06010628, param=, duration=-1ms [2021-09-01 15:07:34.894][Trace][8736][s6916b65] connected stream, tcUrl=rtmp://47.103.61.38/live, pageUrl=, swfUrl=, schema=rtmp, vhost=defaultVhost, port=1935, app=live, stream=06010628, param=, args=(obj) [2021-09-01 15:07:34.894][Trace][8736][s6916b65] new source, stream_url=/live/06010628 [2021-09-01 15:07:34.894][Trace][8736][s6916b65] source url=/live/06010628, ip=122.192.73.142, cache=1, is_edge=0, source_id=/ [2021-09-01 15:07:34.894][Trace][8736][81608412] HTTP #0 127.0.0.1:53814 POST http://127.0.0.1:9090/api/v1/clusters?vhost=__defaultVhost__&ip=47.103.61.38&app=live&stream=06010628&coworker=127.0.0.1:9090, content-length=0 [2021-09-01 15:07:34.894][Warn][8736][s6916b65][11] use private address as ip: 192.168.140.112, ifname=eth0 [2021-09-01 15:07:34.894][Trace][8736][s6916b65] TCP: before dispose resource(RtmpConn)(0x292a4b0), conns=2, zombies=0, ign=0, inz=0, ind=0 [2021-09-01 15:07:34.894][Error][8736][s6916b65][11] serve error code=3091 : service cycle : rtmp: stream service : discover coworkers, url=http://127.0.0.1:9090/api/v1/clusters?vhost=__defaultVhost__&ip=47.103.61.38&app=live&stream=06010628&coworker=127.0.0.1:9090 : parse data {"code":0,"data":{"query":{"ip":"47.103.61.38","vhost":"defaultVhost","app":"live","stream":"06010628"},"origin":null}} thread [8736][s6916b65]: do_cycle() [src/app/srs_app_rtmp_conn.cpp:217][errno=11] thread [8736][s6916b65]: service_cycle() [src/app/srs_app_rtmp_conn.cpp:414][errno=11] thread [8736][s6916b65]: playing() [src/app/srs_app_rtmp_conn.cpp:636][errno=11] thread [8736][s6916b65]: discover_co_workers() [src/app/srs_app_http_hooks.cpp:436][errno=11](Resource temporarily unavailable) [2021-09-01 15:07:34.894][Trace][8736][282f7jrt] TCP: clear zombies=1 resources, conns=2, removing=0, unsubs=0 [2021-09-01 15:07:34.894][Trace][8736][s6916b65] TCP: disposing #0 resource(RtmpConn)(0x292a4b0), conns=2, disposing=1, zombies=0 [2021-09-01 15:07:34.894][Trace][8736][81608412] TCP: before dispose resource(HttpConn)(0x2949830), conns=1, zombies=0, ign=0, inz=0, ind=0 [2021-09-01 15:07:34.894][Warn][8736][81608412][104] client disconnect peer. ret=1007 [2021-09-01 15:07:34.894][Trace][8736][282f7jrt] TCP: clear zombies=1 resources, conns=1, removing=0, unsubs=0 [2021-09-01 15:07:34.894][Trace][8736][81608412] TCP: disposing #0 resource(HttpConn)(0x2949830), conns=1, disposing=1, zombies=0 [2021-09-01 15:07:34.960][Trace][8736][962m0yoe] Hybrid cpu=1.00%,10MB, cid=2,1, timer=63,0,0, clock=0,49,0,0,0,0,0,0,0, free=1, objs=(pkt:0,raw:0,fua:0,msg:1,oth:0,buf:0) [2021-09-01 15:07:37.940][Trace][8736][7n9ro4pr] RTMP client ip=122.192.73.142:63068, fd=12 [2021-09-01 15:07:38.348][Trace][8736][7n9ro4pr] complex handshake success [2021-09-01 15:07:38.348][Trace][8736][7n9ro4pr] connect app, tcUrl=rtmp://47.103.61.38/live, pageUrl=, swfUrl=, schema=rtmp, vhost=47.103.61.38, port=1935, app=live, args=(obj) [2021-09-01 15:07:38.348][Trace][8736][7n9ro4pr] edge-srs ip=30.86.211.78, version=5.0.11, pid=75445, id=0 [2021-09-01 15:07:38.348][Trace][8736][7n9ro4pr] protocol in.buffer=0, in.ack=0, out.ack=0, in.chunk=128, out.chunk=128 [2021-09-01 15:07:38.392][Trace][8736][7n9ro4pr] client identified, type=Play, vhost=47.103.61.38, app=live, stream=06010628, param=, duration=-1ms [2021-09-01 15:07:38.392][Trace][8736][7n9ro4pr] connected stream, tcUrl=rtmp://47.103.61.38/live, pageUrl=, swfUrl=, schema=rtmp, vhost=defaultVhost, port=1935, app=live, stream=06010628, param=, args=(obj) [2021-09-01 15:07:38.392][Trace][8736][7n9ro4pr] source url=/live/06010628, ip=122.192.73.142, cache=1, is_edge=0, source_id=/ [2021-09-01 15:07:38.392][Trace][8736][fpf422q9] HTTP #0 127.0.0.1:53816 POST http://127.0.0.1:9090/api/v1/clusters?vhost=__defaultVhost__&ip=47.103.61.38&app=live&stream=06010628&coworker=127.0.0.1:9090, content-length=0 [2021-09-01 15:07:38.392][Trace][8736][7n9ro4pr] TCP: before dispose resource(RtmpConn)(0x29496b0), conns=2, zombies=0, ign=0, inz=0, ind=0 [2021-09-01 15:07:38.392][Error][8736][7n9ro4pr][11] serve error code=3091 : service cycle : rtmp: stream service : discover coworkers, url=http://127.0.0.1:9090/api/v1/clusters?vhost=__defaultVhost__&ip=47.103.61.38&app=live&stream=06010628&coworker=127.0.0.1:9090 : parse data {"code":0,"data":{"query":{"ip":"47.103.61.38","vhost":"defaultVhost","app":"live","stream":"06010628"},"origin":null}} thread [8736][7n9ro4pr]: do_cycle() [src/app/srs_app_rtmp_conn.cpp:217][errno=11] thread [8736][7n9ro4pr]: service_cycle() [src/app/srs_app_rtmp_conn.cpp:414][errno=11] thread [8736][7n9ro4pr]: playing() [src/app/srs_app_rtmp_conn.cpp:636][errno=11] thread [8736][7n9ro4pr]: discover_co_workers() [src/app/srs_app_http_hooks.cpp:436][errno=11](Resource temporarily unavailable)

3. SRS的配置如下(Config):
3.1 edge端配置

listen 1935; max_connections 1000; daemon off; srs_log_tank console; http_api { enabled on; listen 1985; } http_server { enabled on; listen 8080; dir ./objs/nginx/html; } stream_caster { enabled on; caster gb28181; output rtmp://127.0.0.1:1935/live/[stream]; listen 9000; tcp_enable off; rtp_port_min 58200; rtp_port_max 58300; wait_keyframe on; rtp_idle_timeout 30; audio_enable off; jitterbuffer_enable on; host $CANDIDATE; auto_create_channel on; sip {

是否启用srs内部sip信令

    # 为on信令走srs, off 只转发ps流
    enabled off;

    # sip监听udp端口
    listen              5060;

    # SIP server ID(SIP服务器ID).
    # 设备端配置编号需要与该值一致,否则无法注册
    serial              34020000002000000001;

    # SIP server domain(SIP服务器域)
    realm               3402000000;

    # 服务端发送ack后,接收回应的超时时间,单位为秒
    # 如果指定时间没有回应,认为失败
    ack_timeout         30;

    # 设备心跳维持时间,如果指定时间内(秒)没有接收一个心跳
    # 认为设备离线
    keepalive_timeout   120;

    # 注册之后是否自动给设备端发送invite
    # on: 是  off 不是,需要通过api控制
    auto_play           on;
    # 设备将流发送的端口,是否固定
    # on 发送流到多路复用端口 如9000
    # off 自动从rtp_mix_port - rtp_max_port 之间的值中
    # 选一个可以用的端口
    invite_port_fixed     on;

    # 向设备或下级域查询设备列表的间隔,单位(秒)
    # 默认60秒
    query_catalog_interval  60;
}

} rtc_server { enabled on; listen 8000; candidate $CANDIDATE; }

vhost defaultVhost { rtc { enabled on; bframe discard; } http_remux { enabled on; mount [vhost]/[app]/[stream].flv; } cluster { mode remote; origin xx.xx.xx.xx:1935; } }

3.2 origin端配置

listen 1935; max_connections 1000; daemon off; srs_log_tank console; pid ./objs/origin.cluster.serverA.pid; http_api { enabled on; listen 9090; } http_server { enabled on; listen 8080; dir ./objs/nginx/html; } stream_caster { enabled on; caster gb28181; output rtmp://127.0.0.1:1935/live/[stream]; listen 9000; tcp_enable off; rtp_port_min 58200; rtp_port_max 58300; wait_keyframe on; rtp_idle_timeout 30; audio_enable off; jitterbuffer_enable on; host 47.103.61.38; auto_create_channel on; sip {

是否启用srs内部sip信令

    # 为on信令走srs, off 只转发ps流
    enabled off;

    # sip监听udp端口
    listen              5060;

    # SIP server ID(SIP服务器ID).
    # 设备端配置编号需要与该值一致,否则无法注册
    serial              34020000002000000001;

    # SIP server domain(SIP服务器域)
    realm               3402000000;

    # 服务端发送ack后,接收回应的超时时间,单位为秒
    # 如果指定时间没有回应,认为失败
    ack_timeout         30;

    # 设备心跳维持时间,如果指定时间内(秒)没有接收一个心跳
    # 认为设备离线
    keepalive_timeout   120;

    # 注册之后是否自动给设备端发送invite
    # on: 是  off 不是,需要通过api控制
    auto_play           on;
    # 设备将流发送的端口,是否固定
    # on 发送流到多路复用端口 如9000
    # off 自动从rtp_mix_port - rtp_max_port 之间的值中
    # 选一个可以用的端口
    invite_port_fixed     on;

    # 向设备或下级域查询设备列表的间隔,单位(秒)
    # 默认60秒
    query_catalog_interval  60;
}

} rtc_server { enabled on; listen 8000; candidate $CANDIDATE; } vhost defaultVhost { rtc { enabled on; bframe discard; } http_remux { enabled on; mount [vhost]/[app]/[stream].flv; } cluster { mode local; origin_cluster on; coworkers 127.0.0.1:9090; } }



**重现(Replay)**

> 重现Bug的步骤(How to replay bug?)

1. `edge和origin 配置成origin-cluster模式`
1. `ipc推流到edge`
1. `origin控制台中有媒体信息,但是是无流状态`

**期望行为(Expect)**

> origin-cluster模式下,edge端接收ipc的ps流可以正常转发到origin