import com.on2.flix.*;
import java.io.*;
public class cli_encode {
public static void main(String argv[])
{
FlixEngine2 flix;
System.out.println("Using library path: "+
System.getProperty("java.library.path"));
System.out.println("\nFlix Engine client library v"+
FlixEngine2.Version());
System.out.println(FlixEngine2.Copyright()+"\n");
if(argv.length < 2) {
System.out.println("usage: java cli_encode <infile> <outfile>\n");
System.out.println(
"NOTE cli_encode uses libflixengine2.so which is a client\n"+
"NOTE side rpc library. All paths must be accessible to the\n"+
"NOTE server side, i.e., flixd, thus relative paths will most\n"+
"NOTE likely give undesired results. The same can be said\n"+
"NOTE for clients running on different machines.");
System.exit(-1);
}
System.out.println("Connecting to Flix...");
final int timeout_s = 0;
flix = new FlixEngine2("localhost", timeout_s);
try {
flix.Connect();
File f = new File(argv[0]);
System.out.println("Input file : "+argv[0]);
if(!f.isAbsolute())
System.out.println("WARNING: path to input file is not absolute");
flix.SetInputFile(argv[0]);
System.out.println(
" Width: "+flix.video_options_GetSourceWidth()+"\n"+
" Height: "+flix.video_options_GetSourceHeight()+"\n"+
" Duration: "+flix.GetSourceDuration());
f = new File(argv[1]);
System.out.println("Output file : "+argv[1]);
if(!f.isAbsolute())
System.out.println("WARNING: path to output file is not absolute");
flix.SetOutputFile(argv[1]);
System.out.println();
flix.Encode();
boolean ier;
do {
ier = flix.IsEncoderRunning();
System.out.print("\rEncoding..." +
flix.encoding_status_PercentComplete() + "% ");
try {Thread.currentThread().sleep(1000);}
catch(InterruptedException e) {}
} while(ier);
System.out.println("Done!");
printEncoderStatus(flix);
flix.Destroy();
} catch (FlixException e) {
System.out.println("Flix call failed: "+e);
e.printStackTrace();
try {
long[] flixerr = flix.Errno();
System.out.println("\tFlixEngine2.Errno: "+
(e.equals(on2sc.ON2_NET_ERROR)?
"rpcerr":"flixerrno")+": "+flixerr[0]+
" syserrno:"+flixerr[1]);
} catch (FlixException ex) {}
}
}
private static void printEncoderStatus(final FlixEngine2 flix)
{
try {
System.out.println("\nEncoder Status");
System.out.println(" FlixEngine2.GetEncoderState:"+
flix.GetEncoderState());
long[] flixerr = flix.Errno();
System.out.println(" FlixEngine2.Errno: flixerrno:"+
flixerr[0]+" syserrno:"+flixerr[1]);
} catch (FlixException e) {}
}
}