数字音视频知识点汇总(二)
生活随笔
收集整理的这篇文章主要介绍了
数字音视频知识点汇总(二)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
### AAC格式简介
FFF16040 0A4280FC01 4AF28780 21280991 D5F379C7 1271871D E7B66A4E B352A85B 0A4E3C1E 094794EB 4A8AAF24 88497264 2A8AD204 9640B543 5A608903 9874AA88 A8A2A024 4A762121 C6540B2E 115A64C6 3DE7
### ADTS头添加
/*** 添加ADTS头* 一帧AAC+7 = packetLen* @param packet* @param packetLen*/ private void addADTStoPacket(byte[] packet, int packetLen) {int profile = 2; // AAC LCint freqIdx = 8; // 16KHzint chanCfg = 1; // CPE// fill in ADTS datapacket[0] = (byte) 0xFF;packet[1] = (byte) 0xF1;packet[2] = (byte) (((profile - 1) << 6) + (freqIdx << 2) + (chanCfg >> 2));packet[3] = (byte) (((chanCfg & 3) << 6) + (packetLen >> 11));packet[4] = (byte) ((packetLen & 0x7FF) >> 3);packet[5] = (byte) (((packetLen & 7) << 5) + 0x1F);packet[6] = (byte) 0xFC;}p.s.MediaCodec编码的AAC流已经添加好了ADTS头,具体情况可打印出来分析。
### 根据ADTS头计算AAC帧长度
dataLen = 8 * (buffer[4] & 0xff) + ((buffer[5] & 0xff) - 31)/32;
### java中byte与int进行函数计算时要注意转换
byte转化为int有两种情况:
1)要保持数值不变
应用场景:数值计算。等等。
方法:能够直接採用强制类型转换:int i = (int) aByte,
比如:若aByte=0xff(即数值为-1)。则转化为int后。i为0xffffffff。数值仍为-1。
2)保持最低字节中各个位不变,3个高字节所实用0填充
应用场景:编解码操作,
方法:採用位操作:int i = aByte & 0xff。
比如:若aByte=0xff,转化为int后。i为0x000000ff。
总结
以上是生活随笔为你收集整理的数字音视频知识点汇总(二)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: bangteng文件夹各种方式尝试后删除
- 下一篇: Makefile学习(三)[第二版]