發現Android7使用mediacodec進行avc編碼,得到的第一個關鍵幀的h264數據中包含SEI這種nal。
如果我們不需要,或者加上之後對我們有影響,可以去掉。
private int findNextNalPos(byte[] buf,int pos)
{
for (int i = pos; i < buf.length - 3; i++) {
if (buf[i] == 0x00 && buf[i + 1] == 0x00 && buf[i
+ 2] == 0x00
&& buf[i + 3] == 0x01)
return i;
}
return -1;
}
int ret = findNextNalPos(h264buf,4);
while (ret != -1){
if ((h264buf[ret + 4] & 0x1F) == 5)
break;
ret = findNextNalPos(h264buf,ret+4);
}
從buf中查找關鍵幀開頭,找到之後拷貝出來就ok了。