/* * myLib - https://github.com/taktod/myLib * Copyright (c) 2014 ttProject. All rights reserved. * * Licensed under The MIT license. */ package com.ttProject.container.test; import org.apache.log4j.Logger; import org.junit.Test; import com.ttProject.container.IContainer; import com.ttProject.container.IReader; import com.ttProject.container.IWriter; import com.ttProject.container.flv.FlvHeaderTag; import com.ttProject.container.flv.FlvTagWriter; import com.ttProject.container.mkv.MkvTagReader; import com.ttProject.container.mkv.type.SimpleBlock; import com.ttProject.nio.channels.FileReadChannel; import com.ttProject.nio.channels.IFileReadChannel; /** * convert test from mkv to ? * @author taktod */ public class MkvToTest { /** logger */ private Logger logger = Logger.getLogger(MkvToTest.class); /** * to flv(h264 / aac) * this test for h264 Slice frame which consists of two slice nals. * @throws Exception */ @Test public void flv_h264_aac_ex2() throws Exception { logger.info("from mkv to flv test(h264 / aac)"); FlvTagWriter writer = new FlvTagWriter("output_mpegts_h264_aac_ex2.flv"); FlvHeaderTag flvHeader = new FlvHeaderTag(); flvHeader.setAudioFlag(true); flvHeader.setVideoFlag(true); writer.addContainer(flvHeader); convertTest( FileReadChannel.openFileReadChannel( "http://49.212.39.17/ahiru.mkv" ), writer, 0, 1 ); } /** * convert process body * @param source * @param writer */ private void convertTest(IFileReadChannel source, IWriter writer, int videoId, int audioId) { try { writer.prepareHeader(); IReader reader = new MkvTagReader(); IContainer container = null; while((container = reader.read(source)) != null) { if(container instanceof SimpleBlock) { SimpleBlock simpleBlock = (SimpleBlock)container; writer.addFrame(simpleBlock.getTrackId().get(), simpleBlock.getFrame()); } } writer.prepareTailer(); } catch(Exception e) { logger.error(e); } finally { if(source != null) { try { source.close(); } catch(Exception e) { } source = null; } } } }