d
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);