范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

从零开始打造云端AI管理调度平台(番外篇1)文件自动入库更新

  这次更新主要是更新文件自动入库时,同时也向数据库写入文件的时长。例如一个视频长度为01:25:30:02,需要将该数据从视频中提取出来并保存至数据库,同时在查看视频详情时可以展示。
  修改数据表,新增durtaion字段
  models.py  #媒体信息列表 class content_media(models.Model):     id = models.AutoField(primary_key=True)     create_time=models.DateTimeField()     name=models.CharField(max_length=40)     size=models.CharField(max_length=15)     path=models.CharField(max_length=200)     duration=models.CharField(max_length=12,default="00:00:00:00")
  在命令行中执行: python manage.py makemigrations   python manage.py migrate
  数据表更新完成
  修改主程序代码如下: import os import pymysql import time import copy import os import cv2     def scan_files(directory):     files_list = []       for root, sub_dirs, files in os.walk(directory):         for special_file in files:             tmp = []             if (special_file.split("_")[0] != "aizou0629"):                   #判断文件完全写入才进行后续操作                 if (isFinished(os.path.join(root, special_file))):                       #判断文件是否出现重名                     if ("aizou0629_" + special_file in files):                         tmpname = copy.deepcopy(special_file)                         flag=1                         while 1:                             if("aizou0629_" +special_file.replace(".", "("+str(flag)+").") not in files):                                 special_file=special_file.replace(".", "("+str(flag)+").")                                 os.rename(os.path.join(root, tmpname), os.path.join(root, special_file))                                 break                             else:                                 flag+=1                       #开始搜集需入库的文件列表                     tmp.append(special_file)                     tmp.append(cal_size(os.path.join(root, special_file)))                     timearray = time.localtime(os.path.getctime(os.path.join(root, special_file)))                     tmp.append(time.strftime("%Y-%m-%d %H:%M:%S", timearray))                     tmp.append(getMediaInfo(os.path.join(root, special_file)))                     files_list.append(tmp)       if (len(files_list) == 0):         return 0       conn = pymysql.connect(host="localhost",                            user="root",                            password="ChenzroyI.*?",                            database="test")     cursor = conn.cursor()     for each in files_list:         path = str(os.path.join(root, "aizou0629_" + each[0]))         NewPath = ""         for each_1 in path.split(""):             NewPath += each_1 + ""         NewPath = NewPath[:len(NewPath) - 2]         sql="insert into myapp_content_media (create_time,name,size,path,duration) values ("{}","{}","{}","{}","{}")".format(each[2],each[0],each[1],NewPath,each[3])         cursor.execute(sql)         file_rename(root, each[0])     conn.commit()     cursor.close()     conn.close()     return files_list     # 修改文件大小格式,使其更符合阅读习惯 def cal_size(path):     flag = 1     unit_dict = {1: "B", 2: "KB", 3: "MB", 4: "GB", 5: "TB"}     size = os.path.getsize(path)     while 1:         if (size > 1024):             size = size / 1024             flag += 1         else:             return str(round(size, 2)) + unit_dict[flag]     # 判断外来文件是否已完全拷贝到存储中 def isFinished(path):     tmp = []     while 1:         size = os.path.getsize(path)         if (size in tmp):             tmp.append(size)         else:             del tmp             tmp = [size]         if (len(tmp) == 3):             return True         time.sleep(10)     def file_rename(root, filename):     filename_new = "aizou0629_" + filename     os.rename(os.path.join(root, filename), os.path.join(root, filename_new))   #获取视频的时长 def getMediaInfo(path):     cap = cv2.VideoCapture(path)  #打开视频文件     n_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))  #视频的帧数     fps = cap.get(cv2.CAP_PROP_FPS)  #视频的帧率     media_f = int(n_frames % fps)  #视频时长的帧部分     media_s = int(n_frames // fps % 60) #视频时长的秒部分     media_m = int(n_frames // fps // 60 % 60) #视频时长的分钟部分     media_h = int(n_frames // fps // 60 // 60) #视频时长的小时部分       def int2str(media_x):         media_x=str(media_x)         if(len(media_x)==1):             return "0"+media_x         else:             return media_x       media_f=int2str(media_f)     media_s=int2str(media_s)     media_m=int2str(media_m)     media_h=int2str(media_h)       return media_h+":"+media_m+":"+media_s+":"+media_f     if __name__ == "__main__":     path = r"D:PythonWorkspaceMyFirstDjangomysitecontent_mediaorigin"     while 1:         scan_files(path)           time.sleep(5)
  本次更新中新增加了一个getMediaInfo的方法,该方法主要用来提取视频的时长。
  如果直接通过cv2来提取视频时长的话只能获得视频的帧数,比如一个3分钟FPS为25帧的视频,我们想要的是这种格式:"00:03:00:00",但是用cv2提取出来的则是:"4500",也就是视频的总帧数。
  通过getMediaInfo方法可以直接将其转换为我们想要的格式。
  如果文章帮助到了您,可否给一个点赞关注收藏呢~
  如果遇到编程上的问题,欢迎留言哦~
  关注作者回复:aiweb,获取源码下载地址哦~

国内手机市场份额,vivo成最大赢家,苹果笑傲高端市场市场调研机构Counterpoint近日发布中国智能手机市场份额,自从华为因为众所周知的原因进入调整期,国内手机市场第一之争也是非常激烈,结果vivo以24领先群雄,OPPO以20相比较于芯片断供,中国高端制造业市场前途堪忧我国在新一轮的发展中,基于互联网时代的红利,实现了众多新兴领域的大跨步发展,尤其在通信领域的发展,从4G到5G的发展,实现了追赶到反超,正是因为华为在通信领域成为佼佼者,从而引来了从4299跌至2699元,骁龙8系无线充电,从高端市场跌至中端市场作为一代老手机品牌,在智能手机刚兴起的时候,魅族也十分受欢迎,那时候也是主打机海战术,经常发布新机,但是近年来大家也都看到了,魅族早已经沦为小众品牌,发布的手机也是越来越少了,在去大厂不淡定虚拟世界的革新元宇宙与NFT概念股已在启动引言30年前,随便下海做点个体生意就能造福20年前,随便做点电子商务都能引火燎原10年前,随便打理下微信公共号就能通达天下5年前,随便做点直播及视频就能成为该领域的引领者。而如今,没有方向盘售价仅16万元,特斯拉这一次真的要拼了近日有外媒报道,特斯拉计划将在2023年发布一款新能源电动汽车,售价仅为25000美元(约合人民币16万元)。而且还提到,改款车型可能没有方向盘。值得注意的是,特斯拉也发布了这款小微信收费是必然,继关不掉的广告之后,新服务最低收费130元不知道大家发现没有,微信中的广告变得越来越多了。之前可能一周能刷到一两条广告,而现在每天都能刷到两三条广告。笔者按照互联网上的教程进行了广告推送的关闭,按照官方的说法,这个操作也只不用暴露年龄,说说你家的第一台电脑是什么时候买的?这是我买的第一台电脑的收款收据,还是二手的,时间是2000年,配置相当于586,系统是windows98,经常都需要用3。5英寸1。44M那种软盘做为启动盘或者拷贝数据。当时浙江电耳机159元起RedmiBuds3上架半入耳设计你会考虑吗上周曝光了一款Redmi无线耳机新品,没想到今天就官宣上架了RedmiBuds3。基础规格上,官方表示RedmiBuds3采用半入耳设计,单耳机重4。5g,整机重42g,白色耳机盒乐视超级手机即将发布!外观大跌眼镜,配置还能看吗?提到乐视手机,相信很多人都不得不把其与性价比这个词放在一起,的确,当年的乐视手机正是凭借着超高性价比收获了用户的认可,但这样的好景不长,打价格战的思路也让乐视手机负债累累,再加之一海淀区教培行业人才专项服务季拉勾专场开启蓝鲸教育9月6日讯北京市海淀区人社局号召经营性人力资源服务机构全力做好教培人才的就业服务保障工作,开展海淀区教培行业人才专项服务季活动。拉勾招聘作为本次服务季的重要参与者,于9月6中兴通讯2022校招火热来袭!6000优质岗位培养未来数智化人才作为5G领军企业,中兴通讯正式启动2022年度校园招聘,面向全球高校学子,开放6000优质工作岗位,覆盖研发营销运营支撑等多个重点领域,为毕业生提供广阔的事业发展空间。5G引发产业
好用又省钱,目前这4部千元手机最值得买,看看你买中了哪部?买一个高端旗舰手机,可以带来好的体验,那是肯定的,毕竟是花了钱的。不过,现在因为手机竞争激烈的缘故,你不用花很多的钱买手机,一样可以得到好的体验,这就要看你会不会选手机了,有没有选虚拟币被封杀要动手了,虚拟币这两天被全部被封杀,中国大陆境内的所有矿机服务全部暂停,火币的这条消息一出来,无疑是粉碎了所有大陆炒币人的最后幻想。虚拟币真的被彻底封杀了吗?关门打狗了吗?对已经购2021,我被大厂裁员没有年终奖,股票被收回,下份工作还选大厂本文来源时代财经作者徐丹图片来源视觉中国2021年底,在北京西二旗一家互联网公司工作的黄逸收到了被优化的通知。黄逸所在公司做ToB的云计算业务,在各大互联网公司纷纷进入寒冬之际,也大公司早报小米宣布正式对标苹果俞敏洪回应直播带货被吐槽贵(整理卢思叶)今天是12月29日星期三,过去的二十四小时有这些公司动态值得关注新东方直播带货开启首秀,俞敏洪回应农产品带货被吐槽贵雷军宣布小米正式对标苹果,未来五年研发投入超100国内首款基于自主碳化硅的大功率电驱产品正式发布新华社客户端长沙12月26日电(喻佳培佛向东)12月26日,中车时代电气股份有限公司发布国内首款基于自主碳化硅(SiC)大功率电驱产品CPower220s,该产品系统效率最高可达9技术日常系列我想用Swagger来进行API管理,同事说我out了分享今天创建了一个新服务,我想用swagger进行API管理我用swagger来进行管理API接口把,比较方便他你out了,现在谁还用swagger我那用啥他当然是用knife4j华为技术全面加持AITO首款车型预售25万起华为技术全面加持,预售25万起,AITO问界M5正式发布12月23日,AITO品牌旗下首款车型正式发布,定名为问界M5。AITO品牌的含义为AddingIntelligenceto人工智能助力数学研究来源人民网人民日报海外版据新华社悉尼电(刘诗月)一个国际科研团队近日报告说,他们首次在复杂的数学理论领域利用人工智能技术,以机器学习帮助数学家证明或提出新的数学定理,相关研究结果本大兴机场临空区审批程序并联跑一天拿三证再创临空速度11月30日,位于北京大兴国际机场临空经济区内的京东智能产业园项目开工。作为全国大型5G智能物流园区,该园区将建设成为世界一流电商运营中心和国际领先的科研试验中心,也因再次刷新审批iPhone要取消实体卡槽?全面拥抱eSIM真有可能尽管iPhone13系列几乎还没被消费者捂热,但关于iPhone15的爆料就已经来了。不久前来自巴西某科技网站的爆料信息显示,苹果将在2023年推出的iPhone15系列将取消SI首批搭载骁龙8的小米12今晚登场!moto哦,我卖好久了小米12系列终于将在今天正式发布,作为小米的第三代高端旗舰,小米12系列在配置和体验上均有所升级。不过相比之下,早前首发骁龙8的motoedgeX30都已经现货开售好几轮了综合现有