package com.pugh.sockso.music.encoders; import com.pugh.sockso.music.Track; import java.io.DataInputStream; import java.io.IOException; import java.util.Arrays; import org.apache.log4j.Logger; /** * * @author Nathan Perrier */ public class CustomEncoder extends AbstractEncoder { protected final Logger log = Logger.getLogger( CustomEncoder.class ); private String command; public CustomEncoder( String command ) { this.command = command; } public DataInputStream getAudioStream( Track track, int bitrate ) throws IOException { // break up users command into it's parts, then add the track we're // going to play, and the output redirection to the end. final String[] cmdArgs = command.split(" "); final String[] allArgs = new String[cmdArgs.length + 2]; System.arraycopy(cmdArgs, 0, allArgs, 0, cmdArgs.length); allArgs[ cmdArgs.length] = track.getPath(); allArgs[ cmdArgs.length + 1] = "-"; log.debug("Encoding with custom command: " + Arrays.toString(allArgs)); final ProcessBuilder pb = new ProcessBuilder(allArgs); final Process process = pb.start(); return new DataInputStream(process.getInputStream()); } }