X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=jTsSplitter%2Ftrunk%2Fsrc%2Fjtssplitter%2FTsfile.java;h=941bb9a5b7ae01fc4d37e2f3ec33206fd0941871;hb=f4d4ae6cdf7d382d8289247e01f000094f3afd00;hp=5394a868cb855bd3f66730a25695316b24acb215;hpb=84068bc731241198fa12291ca7838df3766b2039;p=rec10%2Frec10-git.git diff --git a/jTsSplitter/trunk/src/jtssplitter/Tsfile.java b/jTsSplitter/trunk/src/jtssplitter/Tsfile.java index 5394a86..941bb9a 100644 --- a/jTsSplitter/trunk/src/jtssplitter/Tsfile.java +++ b/jTsSplitter/trunk/src/jtssplitter/Tsfile.java @@ -1,6 +1,6 @@ /* * jTsSplitter - java based mpeg2ts splitter. - * Copyright (C) 2009-2010 Yukikaze + * Copyright (C) 2009-2012 Yukikaze */ package jtssplitter; @@ -69,7 +69,9 @@ public class Tsfile { pats=m2tp2.getPAT(); boolean containp_table=false; for (int iii=0;iii 0){ containp_table=true; } } @@ -103,7 +105,12 @@ public class Tsfile { //wbyte=wbytet;*/ }else if ((ii==pmt_pid)&&(readti>187)){ wbyte=tb; - ArrayList pmtss=m2tpp.readPMTglobal_byte(tb, pmt_pid); + ArrayList pmtss; + try{ + pmtss=m2tpp.readPMTglobal_byte(tb, pmt_pid); + }catch(NullPointerException e){ + pmtss=new ArrayList(); + } if (pmtss.size()>0){ int[] new_pids=new int[pmtss.size()+3]; new_pids[pmtss.size()]=0; @@ -245,6 +252,67 @@ public class Tsfile { } return pids; } + public Integer[] getProgramNum_byte(String fpath){ + /** + * PIDを取得し、これと思われる必要なPIDを抜き出す。 + * @return プログラム番号(return[0])とPIDのリスト(return[1-]) + */ + FileInputStream in = null; + ArrayList retti = new ArrayList(); + byte[] tb = new byte[188]; + ArrayList pat = new ArrayList(); + ArrayList pat_ok = new ArrayList(); + ArrayList pmt = new ArrayList(); + try { + in = new FileInputStream(fpath); + int imax = 7000; + int mmax = 20000; + for (int i = 0; i < imax; i++) { + if (in.read(tb) == -1) { + in.close(); + System.out.println("Program Table not found."); + System.exit(1); + } + String last8; + Mpeg2TSPacket m2tp; + m2tp = new Mpeg2TSPacket(); + m2tp.setPAT(pat); + m2tp.setPMT(pmt); + m2tp.readTS_byte(tb); + pat = m2tp.getPAT(); + pmt = m2tp.getPMT(); + ArrayList pmtt=m2tp.getPMT(); + for (int i2=0;i2imax-10 && pat_ok.size()==0 && i