MCPcopy Create free account
hub / github.com/Monibuca/engine / WriteVideoFrame

Method WriteVideoFrame

memory-ts.go:166–192  ·  view source on GitHub ↗
(frame VideoFrame, pes *mpegts.MpegtsPESFrame)

Source from the content-addressed store, hash-verified

164}
165
166func (ts *MemoryTs) WriteVideoFrame(frame VideoFrame, pes *mpegts.MpegtsPESFrame) (err error) {
167 var buffer net.Buffers
168 //需要对原始数据(ES),进行一些预处理,视频需要分割nalu(H264编码),并且打上sps,pps,nalu_aud信息.
169 if len(frame.ParamaterSets) == 2 {
170 buffer = append(buffer, codec.NALU_AUD_BYTE)
171 } else {
172 buffer = append(buffer, codec.AudNalu)
173 }
174 buffer = append(buffer, frame.GetAnnexB()...)
175 pktLength := util.SizeOfBuffers(buffer) + 10 + 3
176 if pktLength > 0xffff {
177 pktLength = 0
178 }
179
180 var packet mpegts.MpegTsPESPacket
181 packet.Header.PacketStartCodePrefix = 0x000001
182 packet.Header.ConstTen = 0x80
183 packet.Header.StreamID = mpegts.STREAM_ID_VIDEO
184 packet.Header.PesPacketLength = uint16(pktLength)
185 packet.Header.Pts = uint64(frame.PTS)
186 pes.ProgramClockReferenceBase = packet.Header.Pts
187 packet.Header.Dts = uint64(frame.DTS)
188 packet.Header.PtsDtsFlags = 0xC0
189 packet.Header.PesHeaderDataLength = 10
190 packet.Buffers = buffer
191 return ts.WritePESPacket(pes, packet)
192}

Callers

nothing calls this directly

Calls 3

WritePESPacketMethod · 0.95
SizeOfBuffersFunction · 0.92
GetAnnexBMethod · 0.65

Tested by

no test coverage detected