You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

46 lines
1.2 KiB

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();
}
}