use of com.feeyo.mpeg2ts.TsReader in project feeyo-hlsserver by variflight.
the class TsReaderTest method main.
public static void main(String[] args) {
/*
audio
channelCount 1/2
sampleRate 44100/22050/8000
计算 BitRate
video
width / height
pixelType ? YUV420P
videoBitRate = 360000;
*/
/*
-2
10000010 -> 11111101
11111111111111111111111111111110
10000010
*/
byte bb = -2;
System.out.println(Integer.toBinaryString(bb));
System.out.println(Integer.toBinaryString(bb & 0xff));
TsReader tsReader = new TsReader();
// tsReader.parseTsPacket( getPatBuf() );
// tsReader.parseTsPacket( getPmtBuf() );
// tsReader.parseTsPacket( getAvBuf() );
tsReader.parseTsPacket(getFileAVBuf());
}
use of com.feeyo.mpeg2ts.TsReader in project feeyo-hlsserver by variflight.
the class TsWriterTest method main.
public static void main(String[] args) {
byte[] buf1 = readTsFile("/Users/zhuam/git/feeyo/feeyostreamhls/testdata/ec6d6ac2-283c-4f86-bbb3-ea4e03a214bf.ts");
//
TsReader tsReader = new TsReader();
int frameLength = 0;
int audioFrameLength = 0;
int videoFrameLength = 0;
Ts[] tsPackets = tsReader.parseTsPacket(buf1);
for (int i = 0; i < tsPackets.length; i++) {
Ts ts = tsPackets[i];
if (ts instanceof Pes) {
Pes pes = (Pes) ts;
if (pes.payload_unit_start_indicator == 1) {
frameLength++;
if (pes.stream_id == Ts.AUDIO_STREAM_ID) {
audioFrameLength++;
} else {
videoFrameLength++;
}
}
}
}
//
FrameData[] frames = new FrameData[frameLength];
int frameIdx = 0;
int currentFrameIdx = 0;
for (int i = 0; i < tsPackets.length; i++) {
Ts ts = tsPackets[i];
if (ts instanceof Pes) {
Pes pes = (Pes) ts;
if (pes.payload_unit_start_indicator == 1) {
currentFrameIdx = frameIdx;
frames[currentFrameIdx] = new FrameData();
frames[currentFrameIdx].buf = append(frames[currentFrameIdx].buf, pes.es_data, 0, pes.es_data.length);
frames[currentFrameIdx].dts = pes.dts;
frames[currentFrameIdx].pts = pes.pts;
frames[currentFrameIdx].isAudio = (pes.stream_id == Ts.AUDIO_STREAM_ID);
frameIdx++;
} else {
frames[currentFrameIdx].buf = append(frames[currentFrameIdx].buf, pes.es_data, 0, pes.es_data.length);
}
}
}
TsWriter tsWriter1 = new TsWriter();
byte[] tsFileBuf = tsWriter1.write(true, FrameDataType.MIXED, frames);
// System.out.println( bytesToHexString( tsFileBuf, 0, tsFileBuf.length));
// mix
writeTsFile("/Users/zhuam/git/feeyo/feeyostreamhls/testdata/test1.ts", tsFileBuf);
int audioFrameIndex = 0;
FrameData[] audioFrames = new FrameData[audioFrameLength];
int videoFrameIndex = 0;
FrameData[] videoFrames = new FrameData[videoFrameLength];
for (int i = 0; i < frames.length; i++) {
FrameData frame = frames[i];
if (frame.isAudio) {
audioFrames[audioFrameIndex] = frame;
audioFrameIndex++;
} else {
videoFrames[videoFrameIndex] = frame;
videoFrameIndex++;
}
}
TsWriter tsWriter2 = new TsWriter();
// long lastPts = 90000;
// for(int i = 0; i < audioFrames.length; i++) {
//
// long pts = (90000L * 1024) / 8000;
// AvStreamFrame frame = audioFrames[i];
// lastPts += pts;
// frame.pts = lastPts;
// }
byte[] tsFileBuf2 = tsWriter2.write(true, FrameDataType.AUDIO, audioFrames);
writeTsFile("/Users/zhuam/git/feeyo/feeyostreamhls/testdata/test2.ts", tsFileBuf2);
TsWriter tsWriter3 = new TsWriter();
byte[] tsFileBuf3 = tsWriter3.write(true, FrameDataType.VIDEO, videoFrames);
writeTsFile("/Users/zhuam/git/feeyo/feeyostreamhls/testdata/test3.ts", tsFileBuf3);
}
use of com.feeyo.mpeg2ts.TsReader in project feeyo-hlsserver by variflight.
the class TsWriterTest2 method main.
public static void main(String[] args) {
byte[] buf1 = readTsFile("/Users/zhuam/git/feeyo/feeyostreamhls/testdata/10844.ts");
//
TsReader tsReader = new TsReader();
int frameLength = 0;
Ts[] tsPackets = tsReader.parseTsPacket(buf1);
for (int i = 0; i < tsPackets.length; i++) {
Ts ts = tsPackets[i];
if (ts instanceof Pes) {
Pes pes = (Pes) ts;
if (pes.payload_unit_start_indicator == 1) {
frameLength++;
}
}
}
//
FrameData[] frames = new FrameData[frameLength];
int frameIdx = 0;
int currentFrameIdx = 0;
for (int i = 0; i < tsPackets.length; i++) {
Ts ts = tsPackets[i];
if (ts instanceof Pes) {
Pes pes = (Pes) ts;
if (pes.payload_unit_start_indicator == 1) {
currentFrameIdx = frameIdx;
frames[currentFrameIdx] = new FrameData();
frames[currentFrameIdx].buf = append(frames[currentFrameIdx].buf, pes.es_data, 0, pes.es_data.length);
frames[currentFrameIdx].dts = pes.dts;
frames[currentFrameIdx].pts = pes.pts;
frames[currentFrameIdx].isAudio = (pes.stream_id == Ts.AUDIO_STREAM_ID);
frameIdx++;
} else {
frames[currentFrameIdx].buf = append(frames[currentFrameIdx].buf, pes.es_data, 0, pes.es_data.length);
}
}
}
TsWriter tsWriter1 = new TsWriter();
byte[] tsFileBuf = tsWriter1.write(true, FrameDataType.AUDIO, frames);
// mix
writeTsFile("/Users/zhuam/git/feeyo/feeyostreamhls/testdata/test222.ts", tsFileBuf);
}