private void executeAudio(final FlvAtom flvAtom) {
		RtmpHeader header = flvAtom.getHeader();
		ChannelBuffer dataBuffer = flvAtom.getData().duplicate();
		boolean sequenceHeader = false;
		// audio
		AudioTag tag = new AudioTag(dataBuffer.readByte());
		// コーデックを確認コーデック状態がかわっていることを確認した場合は、やりなおしにする必要があるので、有無をいわさず処理やり直しにする。
		if(audioCodec == null) {
			audioCodec = CodecType.getCodecType(tag);
		}
		if(audioCodec != CodecType.getCodecType(tag)) {
			logger.info("コーデック情報がまえの状態と違うのを検知しましたよ。");
			stop();
		}
		// シーケンスヘッダ確認
		sequenceHeader = mediaSequenceHeader.isAacMediaSequenceHeader(flvAtom, tag, dataBuffer.readByte());
		// 本処理前の準備
		if(!isPlaying) {
			if(playTime == -1) {
				playTime = header.getTime();
			}
			if(sequenceHeader) {
				return;
			}
			// timestampが0に関しては無視する。
			if(header.getTime() == 0) {
				return;
			}
			// １秒以上たって、videoCodecが決定されない場合は音声のみとして始める
			if(header.getTime() - playTime > 1000 && videoCodec == null) {
				videoCodec = CodecType.NONE;
				mediaSequenceHeader.resetAvcMediaSequenceHeader();
				// 動作を開始する。
				start(header);
			}
			else {
				return;
			}
		}
		else {
			lastWriteTime = System.currentTimeMillis();
		}
		if(videoCodec == CodecType.NONE) {
			// videoCodecが存在しないと判定された場合は、audioデータ単体で次のデータ化してよくなるため、そのまま追記するようにする。
			header.setTime(header.getTime() - startTime);
			write(flvAtom);
		}
		else {
			// videoCodecが存在している場合、もしくは、判定前の場合はaudioAtomはソートしたら利用する可能性があるので、queueにいれて保存しておく。
			orderManager.addAudioAtom(flvAtom);
		}
	}