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

 

你可能感兴趣的:(d)