private boolean isH264KeyPacket(ByteBuffer buffer) {
		int position = buffer.position();
		byte[] header = new byte[4];
		buffer.get(header);
		// syncByte
		if(header[0] != 0x47) {
			throw new RuntimeException("syncByteがおかしいです。");
		}
		int adaptationFlg = (header[3] & 0x20) >>> 5;
		if(adaptationFlg == 1) { // adaptationFlgがたっている場合は、追加情報に時間情報があるかもしれない
			// adaptationFieldについて解析する。
			int adaptationFieldLength = (buffer.get() & 0xFF);
			if(adaptationFieldLength != 0) {
				byte[] data = new byte[adaptationFieldLength];
				int pos = 0;
				buffer.get(data);
				int randomAccessIndicator = (data[pos] & 0x40) >>> 6;
				int pcrFlg = (data[pos] & 0x10) >>> 4;
				if(pcrFlg == 1 && randomAccessIndicator == 1) { // pcrフラグがたっている場合は、時間の情報がある
					// adaptationField後のデータを読みこんでPESパケットヘッダであるか確認する。
					data = new byte[3];
					buffer.get(data);
					// メディアトラックであることを確認
					if(data[0] == 0x00 && data[1] == 0x00 && data[2] == 0x01) {
						// 経過時間を取得
						float passedTime = (getManager().getPassedTic() - startTic) / 90000f;
						// この分割する部分だけ、なんとかしておく必要あり。
						if(passedTime >= Setting.getInstance().getDuration()) {
							// 経過時間が分割秒数を超えている場合は、次のパケットにすすむ
							getManager().addPassedTime(getDuration());
							buffer.position(position);
							return true;
						}
					}
				}
			}
		}
		// 元に戻して次にまわす。
		buffer.position(position);
		return false;
	}