大家好,欢迎来到IT知识分享网。
”’get parameter from ffmpegfunction check_ffmepg_existfunction return_all_parameterfunction return_video_height_wigthfunction return_video_filesizefunction return_video_full_framefunction return_video_time_length”’
import os
import subprocess
import json
class ffprboe_parameter():
def __init__(self,env=0):
”’env 1 代表使用本地环境变量env 2 代表使用bin目录下的:param env:”’
self.check_ffmepg_exist() if env == 1 else print(end=”)
def check_ffmepg_exist(self):
base_dir = os.getcwd() + os.sep + ‘bin’
assert os.path.exists(base_dir + os.sep + ‘ffmpeg.exe’), FileNotFoundError(‘The bin dir not have ffmpeg.exe’)
assert os.path.exists(base_dir + os.sep + ‘ffprobe.exe’), FileNotFoundError(‘The bin dir not have ffprobe.exe’)
def return_all_parameter(self,video_path=None):
video_path=self.video_path_check(video_path=video_path)
assert os.path.exists(video_path),FileNotFoundError(‘video not found’)
assert os.path.isfile(video_path),FileExistsError(‘video is not file,please check it ‘)
try:
all_parameter=subprocess.check_output([‘ffprobe’,’-i’,video_path,’-print_format’,’json’,’-show_format’,’-show_streams’,’-v’,’quiet’])
all_parameter=all_parameter.decode(‘utf8’)
all_parameter=json.loads(all_parameter)
except Exception:
raise Exception(‘error for get video info’)
return all_parameter
def return_video_height_wigth(self,video_path=None):
video_path = self.video_path_check(video_path=video_path)
tmp=self.return_all_parameter(video_path=video_path)[‘streams’][0]
return (tmp[‘width’],tmp[‘height’])
def return_video_filesize(self,format=’GB’,video_path=None):
video_path = self.video_path_check(video_path=video_path)
tmp = self.return_all_parameter(video_path=video_path)[‘format’]
if format.lower()==’gb’:
return float(‘%.4f’%(int(tmp[‘size’])/1024/1024/1024)),format.upper()
if format.lower()==’mb’:
return float(‘%.4f’%(int(tmp[‘size’])/1024/1024)),format.upper()
if format.lower()==’kb’:
return float(‘%.4f’ % (int(tmp[‘size’]) / 1024 )), format.upper()
def return_video_full_frame(self,video_path=None):
video_path=self.video_path_check(video_path=video_path)
tmp = self.return_all_parameter(video_path=video_path)[‘streams’][0]
return tmp[‘nb_frames’]
def init_video_path(self,video_path):
self.video_path=video_path
return self.video_path
def video_path_check(self,video_path):
if video_path == None:
try:
video_path=self.video_path
except:
raise BaseException(‘video_path is not define ‘)
return video_path
def return_video_time_length(self,video_path=None):
video_path=self.video_path_check(video_path=video_path)
tmp = self.return_all_parameter(video_path=video_path)[‘format’]
return str(int(float(tmp[‘duration’])/3600)).__add__(‘小时’).__add__(str(int(float(tmp[‘duration’])%3600/60))).__add__(‘分钟’)
def return_all_items(self,video_path=None):
video_path=self.video_path_check(video_path=video_path)
tmp={
‘video_height_wigth’:list(self.return_video_height_wigth()),
‘video_filesize’:”.join([”.join(str(x)) for x in self.return_video_filesize()]),
‘video_full_frame’:self.return_video_full_frame(),
‘video_time_length’:self.return_video_time_length()
}
return tmp
if __name__ == ‘__main__’:
video_info_api=ffprboe_parameter()
video_info_api.init_video_path(video_path=r’d:\\test.mp4′)
video_info_api.return_all_items()
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/25034.html