package com.inspect.tcpserver.sip.gb28181; import java.io.ByteArrayOutputStream; import java.nio.ByteBuffer; public class Gb28181PsMuxer { private boolean headerSent = false; public byte[] muxH264(byte[] annexB, long pts90k) { try { ByteArrayOutputStream out = new ByteArrayOutputStream(); if (!headerSent) { out.write(PsHeader.packHeader()); out.write(PsHeader.systemHeader()); out.write(PsHeader.psmHeader()); headerSent = true; } out.write(PesPacket.buildH264Pes(annexB, pts90k)); return out.toByteArray(); } catch (Exception e) { return null; } } public byte[] muxOneFrame(byte[] h264, long pts90k) { try { ByteArrayOutputStream out = new ByteArrayOutputStream(); // ⚠️ 每一帧都必须有 out.write(PsHeader.packHeader()); out.write(PsHeader.systemHeader()); out.write(PsHeader.psmHeader()); out.write(PesPacket.buildH264Pes(h264, pts90k)); return out.toByteArray(); } catch (Exception e) { return null; } } }