mirror of
https://github.com/ossrs/srs.git
synced 2025-02-15 04:42:04 +00:00
01. Support GB config as StreamCaster. 02. Support disable GB by --gb28181=off. 03. Add utests for SIP examples. 04. Wireshark plugin to decode TCP/9000 as rtp.rfc4571 05. Support MPEGPS program stream codec. 06. Add utest for PS stream codec. 07. Decode MPEGPS packet stream. 08. Carry RTP and PS packet as helper in PS message. 09. Support recover from error mode. 10. Support process by a pack of PS/TS messages. 11. Add statistic for recovered and msgs dropped. 12. Recover from err position fastly. 13. Define state machine for GB session. 14. Bind context to GB session. 15. Re-invite when media disconnected. 16. Update GitHub actions with GB28181. 17. Support parse CANDIDATE by env or pip. 18. Support mux GB28181 to RTMP. 19. Support regression test by srs-bench. |
||
---|---|---|
.. | ||
aac.go | ||
bitstream.go | ||
codec.go | ||
go.mod | ||
h264.go | ||
h265.go | ||
LICENSE | ||
opus.go | ||
README.md | ||
util.go | ||
vp8.go |
USAGE
-
如何解析sps/pps/vps 以解析sps为例
//sps原始数据,不带start code(0x00000001) var rawsps []byte = []byte{0x67,....} //step1 创建BitStream bs := codec.NewBitStream(rawsps) //step2 解析sps sps := &SPS{} sps.Decode(bs)
-
获取视频宽高 以h264为例子
//sps原始数据,以startcode开头(0x00000001) var rawsps []byte = []byte{0x00,0x00,0x00,0x01,0x67,.....} w, h := codec.GetH264Resolution(rawsps)
-
生成Extradata 以h264为例子
//多个sps原始数据,以startcode开头(0x00000001) var spss [][]byte = [][]byte{ []byte{0x00,0x00,0x00,0x01,0x67,...}, []byte{0x00,0x00,0x00,0x01,0x67,...}, .... } //多个pps原始数据,以startcode开头(0x00000001) var ppss [][]byte = [][]byte{ []byte{0x00,0x00,0x00,0x01,0x68,...}, []byte{0x00,0x00,0x00,0x01,0x68,...}, .... } extranData := codec.CreateH264AVCCExtradata(spss,ppss)
-
Extradata转为Annex-B格式的sps,pps 以h264为例子
//一般从flv/mp4格式中获取 extraData //解析出来多个sps,pps, 且sps pps 都以startcode开头 spss,ppss := codec.CovertExtradata(extraData)
-
生成H265 extrandata
// H265的extra data 生成过程稍微复杂一些 //创建一个 HEVCRecordConfiguration 对象 hvcc := codec.NewHEVCRecordConfiguration() //对每一个 sps/pps/vps,调用相应的UpdateSPS,UpdatePPS,UpdateVPS接口 hvcc.UpdateSPS(sps) hvcc.UpdatePPS(pps) hvcc.UpdateVPS(vps) //调用Encode接口生成 extran := hvcc.Encode()
-
获取对应的sps id/vps id/pps id
//以h264为例子,有四个接口 //sps 以startcode 开头 codec.GetSPSIdWithStartCode(sps) //sps2 不以startcode 开头 codec.GetSPSId(sps2) //pps 以startcode 开头 codec.GetPPSIdWithStartCode(pps) //pps2 不以startcode 开头 codec.GetPPSId(pps2)