/* * myLib - https://github.com/taktod/myLib * Copyright (c) 2014 ttProject. All rights reserved. * * Licensed under The MIT license. */ package com.ttProject.transcode.ffmpeg.unit; import java.nio.ByteBuffer; import com.ttProject.media.Unit; import com.ttProject.media.flv.FlvHeader; import com.ttProject.media.flv.Tag; import com.ttProject.transcode.exception.FormatChangeException; /** * flvのunitをfilestreamに変換する動作 * @author taktod */ public class FlvDeunitizer implements IDeunitizer { private boolean flvHeaderSentFlag = false; /** * 入力unitが動作対象であるか確認 */ @Override public boolean check(Unit unit) throws FormatChangeException { if(unit instanceof Tag) { return true; } return false; } /** * flvのbufferに変換して応答 */ @Override public ByteBuffer getBuffer(Unit unit) throws Exception { if(!(unit instanceof Tag)) { return null; } Tag tag = (Tag) unit; if(!flvHeaderSentFlag) { FlvHeader flvHeader = new FlvHeader(); flvHeader.setAudioFlg(true); flvHeader.setVideoFlg(true); ByteBuffer buffer = flvHeader.getBuffer(); flvHeaderSentFlag = true; ByteBuffer tagBuffer = tag.getBuffer(); ByteBuffer result = ByteBuffer.allocate(buffer.remaining() + tagBuffer.remaining()); result.put(buffer); result.put(tagBuffer); result.flip(); return result; } else { return tag.getBuffer(); } } @Override public void close() { } }