package com.inspect.tcpserver.sip.stream; import lombok.extern.slf4j.Slf4j; @Slf4j public class RtpSender { private static final int MTU = 1400; private static final int PAYLOAD_TYPE = 98; private int seq = 0; private final int ssrc; private final RtpSocket socket; private final RtpClock clock = new RtpClock(); public RtpSender(String ip, int port, int ssrc) throws Exception { this.ssrc = ssrc; this.socket = new RtpSocket(ip, port); } public void sendPs(byte[] ps) throws Exception { long ts = clock.next(); int offset = 0; while (offset < ps.length) { int size = Math.min(MTU, ps.length - offset); boolean marker = (offset + size) >= ps.length; RtpPacket pkt = new RtpPacket(size); pkt.setHeader(PAYLOAD_TYPE, seq++, ts, ssrc, marker); System.arraycopy(ps, offset, pkt.buffer, RtpPacket.HEADER_SIZE, size); pkt.length = RtpPacket.HEADER_SIZE + size; socket.send(pkt.buffer, pkt.length); offset += size; log.info("sendPs offset = {}", offset); } } public void close() { socket.close(); } }