/* * myLib - https://github.com/taktod/myLib * Copyright (c) 2014 ttProject. All rights reserved. * * Licensed under GNU GENERAL PUBLIC LICENSE Version 3. */ package com.ttProject.transcode.xuggle.flv.test; import java.util.List; import org.apache.log4j.Logger; import com.ttProject.media.Unit; import com.ttProject.media.flv.FlvHeader; import com.ttProject.media.flv.ITagAnalyzer; import com.ttProject.media.flv.Tag; import com.ttProject.media.flv.TagAnalyzer; import com.ttProject.nio.channels.FileReadChannel; import com.ttProject.nio.channels.IFileReadChannel; import com.ttProject.transcode.ITrackListener; import com.ttProject.transcode.xuggle.IXuggleTranscodeManager; import com.ttProject.transcode.xuggle.Preset; import com.ttProject.transcode.xuggle.XuggleTranscodeManager; import com.ttProject.transcode.xuggle.packet.FlvAudioPacketizer; import com.ttProject.transcode.xuggle.packet.FlvDepacketizer; import com.ttProject.transcode.xuggle.packet.FlvVideoPacketizer; import com.ttProject.transcode.xuggle.track.IXuggleTrackManager; /** * ファイルをxuggleで変換する動作テスト * @author taktod */ public class FileTranscodeTest { /** ロガー */ private Logger logger = Logger.getLogger(FileTranscodeTest.class); // @Test public void checkCpu() { System.out.println(Runtime.getRuntime().availableProcessors()); } /** * 動作テスト */ // @Test public void test() { // JNIMemoryManager.setMemoryModel(MemoryModel.NATIVE_BUFFERS); IFileReadChannel source = null; IXuggleTranscodeManager audioTranscodeManager = null; IXuggleTranscodeManager videoTranscodeManager = null; try { // mario.flvをダウンロードしつつコンバートさせる source = FileReadChannel.openFileReadChannel("http://49.212.39.17/mario.flv"); FlvHeader flvHeader = new FlvHeader(); flvHeader.analyze(source); ITagAnalyzer analyzer = new TagAnalyzer(); Tag tag = null; // xuggleに変換させる。 audioTranscodeManager = new XuggleTranscodeManager(); videoTranscodeManager = new XuggleTranscodeManager(); audioTranscodeManager.setPacketizer(new FlvAudioPacketizer()); videoTranscodeManager.setPacketizer(new FlvVideoPacketizer()); // 音声の設定 IXuggleTrackManager trackManager = (IXuggleTrackManager) audioTranscodeManager.addNewTrackManager(); trackManager.setDepacketizer(new FlvDepacketizer()); // flvTagにする trackManager.setEncoder(Preset.mp3()); // mp3 trackManager.setTrackListener(new ITrackListener() { @Override public void receiveData(List<Unit> units) { logger.info(units); } @Override public void close() { logger.info("終了通知を受け取りました。"); } }); // 音声の設定 trackManager = (IXuggleTrackManager) videoTranscodeManager.addNewTrackManager(); trackManager.setDepacketizer(new FlvDepacketizer()); // flvTagにする trackManager.setEncoder(Preset.h264()); // h264 trackManager.setTrackListener(new ITrackListener() { @Override public void receiveData(List<Unit> units) { logger.info(units); } @Override public void close() { logger.info("終了通知を受け取りました"); } }); // 処理実行 while((tag = analyzer.analyze(source)) != null) { audioTranscodeManager.transcode(tag); videoTranscodeManager.transcode(tag); } } catch(Exception e) { e.printStackTrace(); } finally { if(audioTranscodeManager != null) { audioTranscodeManager.close(); audioTranscodeManager = null; } if(videoTranscodeManager != null) { videoTranscodeManager.close(); videoTranscodeManager = null; } if(source != null) { try { source.close(); } catch(Exception e) { } source = null; } } } }