作为一名技术人员,电脑硬盘上存的许多视频都是教程、录像,而非电影。
这些长期保存的视频文件,如果能够有效压缩,则对我们帮助甚大。
小丸工具箱
我一般使用 小丸工具箱 进行压缩。这是目前公认的最好用的压缩软件。
百度网盘链接:https://pan.baidu.com/s/1dRGMXBsKUGZ2tFlT0ZnJ7Q 提取码:6666
此软件的功能是:
1,使用软件功能1,扫描电脑某个分区的所有视频文件,将它们复制集中到一个文件夹中。
2,用户手动 使用 小丸工具箱,进行压缩。
3,使用软件功能2,替换视频文件。
说明:小丸工具箱,可进行多个视频的批量压制。 压制编码,我一般选择x264_32_8bit,CRF参数默认的23或23.5即可。
背景:上周从非洲马里回国,现在上海隔离。看了python教程,编写了这个对我来说很实用的程序,第一个python程序。
源码
源代码子函数比较多,有比较简单。就不一一贴上了。
资源在:https://download.csdn.net/download/puff1987/22319079?spm=1001.2014.3001.5503
项目思路
- 用户使用此软件的功能1,选择将E盘的符合条件的视频,都复制到指定文件夹。
- 用户手动启动“小丸工具箱”,转换视频。
- 用户继续使用此软件的功能2,选择将转换后的视频、替换原视频。
我使用此软件将E盘中的480个视频进行了转换,视频总大小80G.左右。
功能1:复制
当用户选择功能1时,将输入路径,实现复制。
if __name__ == '__main__':
MessageFilePath = 'CopyMessage.xlsx'
postfix = '_batch.mp4' # 后缀名词
ChoiceNum=ChoiceNumFunction()
#ChoiceNum =2 #测试时,方便。
if ChoiceNum==1:
source_dir, target_dir = ChoiceDirFunction()
#source_dir='E:/公司内部培训资料/2016-1-18超声传感器讲解说明'
#target_dir='E:/潜龙勿用'
Filelist = getAllSub(source_dir)
FileListResult = []
FileListResult=JudgeFile(Filelist)
CopyMessage = Configuration(FileListResult,target_dir)
xw_toExcel(CopyMessage, MessageFilePath)
print('**********')
print(CopyMessage)
print('**********')
i=1
for MessageRow in CopyMessage:
Num=mycopy(MessageRow[0],MessageRow[1])
if not Num:
print('此文件复制失败',MessageRow[0],MessageRow[1])
print('当前复制进度为{0}/{1}'.format(str(i),str(len(CopyMessage))))
i+=1
功能2:替换
当用户选择功能2时,将 实现视频文件替换。
elif ChoiceNum==2:
print('\n在将压缩后的视频替换原路径视频之前,您可以在CopyMessage.xlsx文件中配置第三列,选择不替换某些文件。\n')
ti=str(input('是否开始替换文件?y/n ='))
if ti=='y':
ReadMessage = []
ReadMessage = ReadCopyMessage(MessageFilePath)
ExM=ExtendMessage(ReadMessage)
i=1
print('\n')
for MessageRow in ExM:
#print(i,'------',MessageRow)
if MessageRow[2]>0: #使能开关
Num=mycopy(MessageRow[4],MessageRow[5])
if not Num:
print('此文件复制失败',MessageRow[4],MessageRow[5])
else:
ExM[i-1][3]=True
if os.path.exists(MessageRow[5])&os.path.exists(MessageRow[0]): #确定复制成功后,删除最原始视频文件。
DelFile(MessageRow[0])
#print('已删除:',MessageRow[0])
else:
pass
print('****当前复制进度为{0}/{1}\t\t目标路径为:{2}'.format(str(i), str(len(ExM)),MessageRow[5]))
i += 1
'''if i >= 1: # 测试用。 只运行少数几个文件进行测试。
#print(MessageRow)
break'''
xw_toExcel(ExM, MessageFilePath)
print('\n\t替换工作已经完成。\n\t您可以通过',MessageFilePath,'表格文件查看转换结果')
PathTar,File2=os.path.split(ExM[0][1])
print('\t您可以手动删除',PathTar,'文件夹下的所有文件。')