1 byte temp[]=new byte[20];//11个tag head,1+1+3+4
2 temp[0]=0x09;//表示视频
3 int length=NalBufUsed-8;//NAL单元的长度
4 int lengthA=length+5+4;//tag的body长度
5 int lengthB=length+20;//tag的总长度
6 temp[1]=(byte)((lengthA&0xff0000)>>16);//记录NAL的长度
7 temp[2]=(byte)((lengthA&0x00ff00)>>8);
8 temp[3]=(byte)(lengthA&0x0000ff);
9 //接下来3个字节记录时间戳,附加一个字节
10 temp[4]=(byte)((time&0xff0000)>>16);
11 temp[5]=(byte)((time&0x00ff00)>>8);
12 temp[6]=(byte)(time&0x0000ff);
13 time+=60;//时间戳增加
14 temp[7]=0x00;//附加的一个字节
15 //接下来3个字节都是0x00
16 temp[8]=0x00;temp[9]=0x00;temp[10]=0x00;
17 //上面是11个字节的tag头部
18 if((NalBuf[4]&0x1F)== 5)
19 temp[11]=0x17;//关键帧 I帧
20 else
21 temp[11]=0x27;
22 temp[12]=0x01;//表示nal单元
23 temp[13]=0x00;temp[14]=0x00;temp[15]=0x00;
24 //接下来用4个字节表示NAL的长度
25 temp[16]=(byte)((length&0xff000000)>>24);
26 temp[17]=(byte)((length&0x00ff0000)>>16);
27 temp[18]=(byte)((length&0x0000ff00)>>8);
28 temp[19]=(byte)(length&0x000000ff);
29 fileOS.write(temp);
30 fileOS.write(NalBuf,4,length);
31 byte taglength[]=new byte[4];
32 taglength[0]=(byte)((lengthB&0xff000000)>>24);
33 taglength[1]=(byte)((lengthB&0x00ff0000)>>16);
34 taglength[2]=(byte)((lengthB&0x0000ff00)>>8);
35 taglength[3]=(byte)(lengthB&0x000000ff);
36 fileOS.write(taglength);