咱們做試驗時,常會產生“巨量”的圖片和視頻,這些原始資料非常重要,而且不能隨意刪除。隨著時間流逝,積累的文件將會越來越多,而且查找起來也不太方便。
擁有良好工作習慣的工程師,一定會有隨時整理文件的意識和能力。但是繁忙的工作極大的擠壓了工程師的休息時間,為了提高工作效率,不得不使用一些工具。
python是一個非常好用的工具,非常值得去學習和掌握!我個人大概花了1個月的時間就入門了,剩下的就是在使用的過程中逐漸提高技能。
下面看看有沒有你感興趣的功能吧!
批量修改文件名
無論是照片、圖片、視頻、word、ppt、excel、txt等文件都可以通過幾行代碼達到批量修改文件名的目的。
下面就以若干張圖片名稱的修改為例說明吧!
如圖所示,在我桌面input文件夾中有33張圖片,圖片的命名是混亂的。這時候如果我一張張去重命名圖片將會是一個很大的工作量。若是使用python,情況將變得非常簡單。
工作原理:工作原理非常簡單,就是從文件夾中一張張的讀入圖片,然后把每張圖片重新命名保存即可,文件的保存時不修改文件格式。
舉例:將上述圖片重命名為小三輪1.png、小三輪2.png、小三輪3.png、小三輪4.png……,重命名的文件保存到同一個文件夾內。
示意代碼:
import os
# 批量修改文件夾內的文件名
(, ):
= os.listdir()
print() # 顯示文件夾內所有文件名稱
for i in range(len()):
# 源文件名稱
= os.path.join( +"\\" + [i])
# 新文件名稱
= os.path.join( +"\\" + + str(i+1) + "." +[i].rsplit('.', 1)[-1])
# 執(zhí)行重命名操作
os.rename(, )
print("Done!%s 轉換成功!" % [i])
print("-----------------------------")
if =="":
=r"C:\Users\\Desktop\input"
= "小三輪"
(, )
唰的一下,33張圖片已經重命名完成!本來想做個動畫的,無奈程序執(zhí)行時間太短了!各位親自動手試試吧,非常好用!
后來,我還是做了一個動畫,用了1758張圖片,批量修改完成耗時3s,還是很快的。
ffmpeg壓縮單個視頻體積
隨著科學技術的發(fā)展,手機像素越來越高,拍出來的照片和視頻的清晰度也越來越高,問題也隨著而來了。以現在常用的手機為例,錄一個10min的視頻尺寸達到1Gb,這無論是對于數據交互還是儲存都是不太友好的。
有時候我們并不需要視頻擁有那么高的清晰度,有時我們希望在保存清晰度的情況下盡量減小視頻的體積。
比如每完成一個試驗項目,都會相應的產生一段視頻文件,累積起來一個完整的座椅測試項目可能要產生100Gb的視頻文件。若不進行壓縮,我們計算機的硬盤將不堪重負。由于視頻文件也是二進制文件,使用常規(guī)的壓縮工具(360壓縮、好壓、ZIP等)基本沒有什么壓縮效果(不信?可以自己動手試試看!)。
如果想要壓縮單個視頻文件的體積,看下面的方法就夠了!
視頻文件是由視頻流、音頻流組成的將一系列圖片快速播放產生的動態(tài)圖像、音頻的聚合體,通常視頻文件中音頻流很小。視頻流大小主要取決于編碼技術、分辨率、幀率這三個因素。
視頻壓縮的方法通常有減小碼率、減小幀尺寸(寬度x高度)、減小幀率等,下面將一一進行介紹。
減小碼率
什么是碼率()?
=file size / = 文件大小/時長
比如一個視頻尺寸是18.5Mb,視頻時長是15s,則該視頻的碼率即為18.5Mb/15s=18./15=
比如上面這個視頻的碼率太高了,文件尺寸太大,想把視頻文件減小一點又不想破壞分辨率,此時可以減小碼率間接達到減小視頻文件尺寸的目的。
比如把原視頻碼率調為,代碼如下:
ffmpeg -i input.mp4 -b:v 2000k output.mp4
-bufsize的作用主要是控制緩沖器的波動度,讓視頻整體碼率更趨近于希望設定的值。
示意代碼:
ffmpeg -i test1.MOV -b:v 2000k - .mp4
原視頻大小為18.5Mb,壓縮后視頻大小為3.58Mb。
減小幀尺寸(寬度x高度)
如視頻幀原始尺寸為,現在把尺寸調整為960x540,也可以減小視頻尺寸。
代碼如下:
ffmpeg -i input.mp4 -vf scale=960:.mp4
示意代碼:
ffmpeg -i test1.MOV -vf scale=960:.mp4
減小幀率
如原視頻的幀率為30fps,可以根據自己的需求調整為25等。
代碼如下:
ffmpeg -i input.mp4 -r 25 output.mp4
示意代碼:
ffmpeg -i test1.MOV -r 25 .mp4
由于是試驗視頻,對清晰度和分辨率等都有要求,因此我這里選擇減小碼率的方法。
現在我們已經掌握了處理一個視頻的方法,下面來試一下批量處理的方法吧!
python+ffmpeg批量壓縮視頻體積
我們學習python的終極奧義就是解放雙手,提高工作效率,因此優(yōu)勢就是批量處理相同的工作任務。
舉個例子:我桌面文件夾內有24個視頻文件,現在想先把這24個文件重新命名為“試驗過程1、2、3、4……”,然后進行壓縮,把原視頻碼率調為。
壓縮后的文件名以_c結尾,壓縮過程中不改變文件格式(改變格式的方法更簡單,直接改一下新生成文件的后綴名即可!)。壓縮后的視頻文件保存在桌面output文件夾內。
原始視頻文件如下圖所示:
工作原理:讀取每一個視頻文件,調用ffmpeg進行壓縮即可。
代碼如下:
import
import os
import time
# 批量修改文件夾內的文件名
def (, ):
=os.listdir()
print() # 顯示文件夾內所有文件名稱
for i inrange(len()):
# 源文件名稱
=os.path.join( + "\\" + [i])
# 新文件名稱
=os.path.join( + "\\" + + str(i+1) +"." + [i].rsplit('.', 1)[-1])
# 執(zhí)行重命名操作
os.rename(,)
print("Done!%s 轉換成功!" %[i])
print("-----------------------------")
# 批量壓縮視頻體積
def (, , ):
=os.listdir()
print() # 顯示文件夾內所有文件名稱
# 如果不存在路徑中的文件夾,新建一個
if notos.path.exists():
os.mkdir()
for i inrange(len()):
# 源文件名稱
=os.path.join( + "\\" + [i])
# 新文件名稱
=os.path.join( + "\\" + [i].rsplit('.', 1)[0] +
+"." + [i].rsplit('.', 1)[-1])
# 計劃傳入ffmpeg的命令
=(r"C:\ffmpeg\bin\ffmpeg -i %s -b:v 2000k %s" % (, ))
.call()
if == "":
=r"C:\Users\\Desktop\"
= "試驗過程"
= time.time() # 程序開始執(zhí)行的時間
# 執(zhí)行文件重命名函數
(,)
= "_c"
=r"C:\Users\\Desktop\output"
# 執(zhí)行視頻批量壓縮函數
(,, )
print("轉換耗時:%.2f 秒" % (time.time()- ))
如圖:24個視頻文件,僅需281.45秒即完成壓縮工作。
備注:文中涉及到的程序代碼可以在下面鏈接下載。
百度 云:
提取碼:1bhk
陪你一起走過
春夏秋冬
無
座椅檢測知多少
乘用車|商用車|工程機械空·