⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vinfo.py

📁 reduced python source for embedded apps
💻 PY
字号:
#! /usr/bin/env python# Print some info about a CMIF movie file# Usage:## Vinfo [-d] [-q] [-s] [-t] [file] ...# Options:## -d       : print deltas between frames instead of frame times# -q       : quick: don't read the frames# -s       : don't print times (but do count frames and print the total)# -t       : terse (one line/file, implies -s)# file ... : file(s) to inspect; default film.videoimport syssys.path.append('/ufs/guido/src/video')import VFileimport getoptimport string# Global optionsshort = 0quick = 0delta = 0terse = 0maxwidth = 10# Main program -- mostly command line parsingdef main():	global short, quick, delta, terse, maxwidth	try:		opts, args = getopt.getopt(sys.argv[1:], 'dqst')	except getopt.error, msg:		sys.stdout = sys.stderr		print msg		print 'usage: Vinfo [-d] [-q] [-s] [-t] [file] ...'		sys.exit(2)	for opt, arg in opts:		if opt == '-q':			quick = 1		if opt == '-d':			delta = 1		if opt == '-s':			short = 1		if opt == '-t':			terse = short = 1	if not args:		args = ['film.video']	for filename in args:		maxwidth = max(maxwidth, len(filename))	sts = 0	for filename in args:		if process(filename):			sts = 1	sys.exit(sts)# Process one filedef process(filename):	try:		vin = VFile.RandomVinFile(filename)	except IOError, msg:		sys.stderr.write(filename + ': I/O error: ' + `msg` + '\n')		return 1	except VFile.Error, msg:		sys.stderr.write(msg + '\n')		return 1	except EOFError:		sys.stderr.write(filename + ': EOF in video file\n')		return 1	if terse:		print string.ljust(filename, maxwidth),		kbytes = (VFile.getfilesize(filename) + 1023) / 1024		print string.rjust(`kbytes`, 5) + 'K',		print ' ', string.ljust(`vin.version`, 5),		print string.ljust(vin.format, 8),		print string.rjust(`vin.width`, 4),		print string.rjust(`vin.height`, 4),		if type(vin.packfactor) == type(()):			xpf, ypf = vin.packfactor			s = string.rjust(`xpf`, 2) + ',' + \				  string.rjust(`ypf`, 2)		else:			s = string.rjust(`vin.packfactor`, 2)			if type(vin.packfactor) == type(0) and \				  vin.format not in ('rgb', 'jpeg') and \				  (vin.width/vin.packfactor) % 4 <> 0:				s = s + '!  '			else:				s = s + '   '		print s,		sys.stdout.flush()	else:		vin.printinfo()	if quick:		if terse:			print		vin.close()		return 0	try:		vin.readcache()		if not terse:			print '[Using cached index]'	except VFile.Error:		if not terse:			print '[Constructing index on the fly]'	if not short:		if delta:			print 'Frame time deltas:',		else:			print 'Frame times:',	n = 0	t = 0	told = 0	datasize = 0	while 1:		try:			t, ds, cs = vin.getnextframeheader()			vin.skipnextframedata(ds, cs)		except EOFError:			break		datasize = datasize + ds		if cs: datasize = datasize + cs		if not short:			if n%8 == 0:				sys.stdout.write('\n')			if delta:				sys.stdout.write('\t' + `t - told`)				told = t			else:				sys.stdout.write('\t' + `t`)		n = n+1	if not short: print	if terse:		print string.rjust(`n`, 6),		if t: print string.rjust(`int(n*10000.0/t)*0.1`, 5),		print	else:		print 'Total', n, 'frames in', t*0.001, 'sec.',		if t: print '-- average', int(n*10000.0/t)*0.1, 'frames/sec',		print		print 'Total data', 0.1 * int(datasize / 102.4), 'Kbytes',		if t:			print '-- average',			print 0.1 * int(datasize / 0.1024 / t), 'Kbytes/sec',		print	vin.close()	return 0# Don't forget to call the main programtry:	main()except KeyboardInterrupt:	print '[Interrupt]'

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -