import flixengine2
import time,sys,os
def checksc(func, sc):
if (sc != flixengine2.ON2_OK):
print "%s failed: sc= %d" % (func,sc)
if (sc == flixengine2.ON2_NET_ERROR): str = "rpcerr";
else: str = "flixerrno";
res = flixengine2.Flix2_Errno(flix)
print " Flix2_Errno: sc:%d %s:%d syserrno:%d\n" %\
(res[0],str,res[1],res[2])
raise Exception(func)
def print_encoder_status():
print "\nEncoder Status"
res = flixengine2.Flix2_GetEncoderState(flix)
print " Flix2_GetEncoderState: %d" % res[1]
res = flixengine2.Flix2_Errno(flix)
print " Flix2_Errno: sc:%d flixerrno:%d syserrno:%d\n" %\
(res[0],res[1],res[2])
print "Flix Engine client library v%s" % flixengine2.Flix2_Version()
print "%s\n" % flixengine2.Flix2_Copyright()
if (len(sys.argv) < 3):
print "usage: cli_encode.py <infile> <outfile>\n\n"\
"NOTE cli_encode.py 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.\n"
raise Exception()
timeout_s = 0
flixptr = flixengine2.new_flix2handlep()
sc = flixengine2.Flix2_CreateEx(flixptr, "localhost", timeout_s)
flix = flixengine2.flix2handlep_value(flixptr);\
checksc('flixengine2.Flix2_CreateEx',sc)
print "Input File : %s" % sys.argv[1]
if(os.path.isabs(sys.argv[1])!=True):
print "WARNING: path to input file is not absolute"
sc = flixengine2.Flix2_SetInputFile(flix, sys.argv[1]);\
checksc('flixengine2.Flix2_SetInputFile',sc)
srcw = flixengine2.video_options_GetSourceWidth(flix);\
checksc('flixengine2.video_options_GetSourceWidth',srcw[0])
srch = flixengine2.video_options_GetSourceHeight(flix);\
checksc('flixengine2.video_options_GetSourceHeight',srch[0])
srcduration = flixengine2.Flix2_GetSourceDuration(flix);\
checksc('flixengine2.Flix2_GetSourceDuration)',srcduration[0])
print " Width: %d\n" \
" Height: %d\n" \
" Duration: %dms" % \
(srcw[1],srch[1],srcduration[1])
print "Output File : %s" % sys.argv[2]
if(os.path.isabs(sys.argv[2])!=True):
print "WARNING: path to output file is not absolute"
sc = flixengine2.Flix2_SetOutputFile(flix, sys.argv[2]);\
checksc('flixengine2.Flix2_SetOutputFile',sc)
sc = flixengine2.Flix2_Encode(flix); checksc('flixengine2.Flix2_Encode',sc)
ier = [0,1]
print
while(ier[1] != 0):
ier = flixengine2.Flix2_IsEncoderRunning(flix);\
checksc('flixengine2.Flix2_IsEncoderRunning',ier[0])
pcnt = flixengine2.encoding_status_PercentComplete(flix);\
checksc('flixengine2.encoding_status_PercentComplete',pcnt[0])
print "\rEncoding...%d%% " % pcnt[1],
sys.stdout.flush();
time.sleep(1)
print "Done!"
print_encoder_status()
sc = flixengine2.Flix2_Destroy(flix); checksc('flixengine2.Flix2_Destroy',sc)
flixengine2.delete_flix2handlep(flixptr)