From d58f3723e3107b22c519a147cd63b42be7ce5425 Mon Sep 17 00:00:00 2001 From: gn64_jp Date: Sun, 25 Oct 2009 13:07:53 +0000 Subject: [PATCH] Ts Split Software Alpha(Not usable yet). git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/rec10@186 4e526526-5e11-4fc0-8910-f8fd03428081 --- jTsSplitter/trunk/src/jtssplitter/Main.java | 3 +- .../trunk/src/jtssplitter/Mpeg2TSPacket.java | 76 ++++++++++++++++++---- jTsSplitter/trunk/src/jtssplitter/Tsfile.java | 62 ++++++++++++++++-- 3 files changed, 122 insertions(+), 19 deletions(-) diff --git a/jTsSplitter/trunk/src/jtssplitter/Main.java b/jTsSplitter/trunk/src/jtssplitter/Main.java index 118b932..3231323 100644 --- a/jTsSplitter/trunk/src/jtssplitter/Main.java +++ b/jTsSplitter/trunk/src/jtssplitter/Main.java @@ -17,7 +17,8 @@ public class Main { public static void main(String[] args) { // TODO code application logic here Tsfile t1=new Tsfile(); - t1.readTs("D:\\jTssplitter\\test.ts.b25"); + //t1.readTs("D:\\jTssplitter\\test.ts.b25"); + t1.splitTS("D:\\jTssplitter\\test.ts", "D:\\jTssplitter\\test-sp.ts",0); } } diff --git a/jTsSplitter/trunk/src/jtssplitter/Mpeg2TSPacket.java b/jTsSplitter/trunk/src/jtssplitter/Mpeg2TSPacket.java index 67b56d6..0da8fb2 100644 --- a/jTsSplitter/trunk/src/jtssplitter/Mpeg2TSPacket.java +++ b/jTsSplitter/trunk/src/jtssplitter/Mpeg2TSPacket.java @@ -84,16 +84,16 @@ public class Mpeg2TSPacket { } } if (PID==0){ - System.out.print("Pointer field ? : "+pointer_field+"\n"); + //System.out.print("Pointer field ? : "+pointer_field+"\n"); pat_list_now=readPAT(payload); pat_list_all.addAll(pat_list_now); //System.out.print("ここから変更済み\n"); - readPAT(changePAT(payload)); + //readPAT(changePAT(payload)); } for (int i=0;i0)){ + for (int i2=s.length();i2<8;i2++){ + s="0"+s; + } + } + tsbyte=tsbyte+s; + } + String tsheader=""; + header=tsbyte.substring(0,31); + payload=tsbyte.substring(32); + starter=TSString2Int(tsbyte,0,8); + transporterror=TSString2Int(tsbyte,8,1); + payloadstart=TSString2Int(tsbyte,9,1); + transport_priority=TSString2Int(tsbyte,10,1); + PID=TSString2Int(tsbyte,11,13); + adaptation_field=TSString2Int(tsbyte, 26, 2); + continuity_counter=TSString2Int(tsbyte, 28, 4); + payload=""; + if (PID!=8191){ + if (adaptation_field==1){ + pointer_field=TSString2Int(tsbyte, 32, 8); + tsheader=tsbyte.substring(0,40); + payload=tsbyte.substring(40); + }else if (adaptation_field==3){ + int al=TSString2Int(tsbyte,32,8); + if (al<188){ + al=al*8; + } + tsheader=tsbyte.substring(0,40); + payload=tsbyte.substring(48+al); + } + } + if (PID==0){ + //System.out.print("Pointer field ? : "+pointer_field+"\n"); + payload=makePAT(payload, p_table); + //System.out.print("ここから変更済み\n"); + //readPAT(changePAT(payload)); + } + String rets = tsheader+payload; + return Stream2Byte(rets); + } + private String makePAT(String payload_temp,int Table){ int tableid; int sectionlength; ArrayList program_number=new ArrayList(); @@ -185,13 +234,13 @@ public class Mpeg2TSPacket { String loop = ""; patnum=patnum/32; for (int i=0;i0){ + }else if (pat[0]==Table){ loop=loop+payload_temp.substring(64+32*i,95+32*i+1); i=patnum; } @@ -204,7 +253,6 @@ public class Mpeg2TSPacket { crc.update(tt2); } rets=rets+Long2String(crc.getValue(),32); - //for (int i3=0;i<) return rets; } private String Int2String(int num,int length){ diff --git a/jTsSplitter/trunk/src/jtssplitter/Tsfile.java b/jTsSplitter/trunk/src/jtssplitter/Tsfile.java index 50e8b71..52bd461 100644 --- a/jTsSplitter/trunk/src/jtssplitter/Tsfile.java +++ b/jTsSplitter/trunk/src/jtssplitter/Tsfile.java @@ -37,7 +37,7 @@ public class Tsfile { } for (int i=0;i<8200;i++){ if (PIDCount[i]>0){ - System.out.print(Integer.toString(i)+" : "+Integer.toString(PIDCount[i])+"\n"); + //System.out.print(Integer.toString(i)+" : "+Integer.toString(PIDCount[i])+"\n"); } //System.out.print(PIDCount[i]); } @@ -62,6 +62,51 @@ public class Tsfile { } } + public void splitTS(String origpath,String destpath,int csch){ + int[] pids=null; + int p_table=0; + if (csch>0){ + + }else{ + int[] pidst=getPID(origpath); + p_table=pidst[0]; + pids=new int[pidst.length-1]; + for (int i=0;i