詳解Python如何獲取視頻文件的大小和時長
前段時間,微信群有一個朋友問了下面這個問題,雖然很簡單,但是覺得有必要和大家做一個知識分享。

這個問題一共有兩個需求:
- ① 獲取視頻的文件大小;
- ② 獲取視頻的時長;
基于上述兩個問題,我來教大家如何將獲取到的信息存儲到Excel中。
1. 前置知識
這里一共需要用到3個Python庫,分別是os、pandas、moviepy。
- ① os:用于獲取某個目錄下的文件和文件大?。?/li>
- ② pandas:用于將提取到的信息,保存到Excel中;
- ③ moviepy:用于獲取視頻文件中的時長;
注意:pandas和moviepy屬于第三方庫,因此需要我們提前使用如下命令進行安裝。
pip install pandas pip install moviepy
2. 完整代碼
① 導(dǎo)入所有庫
import os import pandas as pd from moviepy.editor import VideoFileClip
② 獲取指定目錄下符合條件的文件
useful_dir = []
for i in os.listdir():
if i.endswith("wmv"):
useful_dir.append(i)
useful_dir結(jié)果如下:

③ 自定義時間轉(zhuǎn)化函數(shù)
def time_convert(seconds):
M,H = 60,3600
if seconds < M:
return f'00:00:0{seconds}' if seconds < 10 else f'00:00:{str(seconds)}'
elif seconds < H:
_M = int(seconds//M)
_S = int(seconds%M)
return f'00:{f"0{_M}" if _M < 10 else str(_M)}:{f"0{_S}" if _S < 10 else str(_S)}'
else:
_H = int(seconds//H)
_M = int(seconds%H//M)
_S = int(seconds%H%M)
return f'{f"0{_H}" if _H < 10 else str(_H)}:{f"0{_M}" if _M < 10 else str(_M)}:{f"0{_S}" if _S < 10 else str(_S)}'由于下面介紹的VideoFileClip()方法,獲取時長的單位是秒。因此,需將秒換成合適的"時分秒"格式。若時間超過一分鐘,換算成"分鐘:秒",若超過一小時,就換算成"小時:分鐘:秒"格式。
④ 獲取文件大小和時長
x = []
y = []
for i in useful_dir:
dir_size = str(round(os.path.getsize(i)/1024/1024,1)) + "M"
clip = VideoFileClip(i)
dir_time = time_convert(clip.duration)
x.append(dir_size)
y.append(dir_time)
df = pd.DataFrame({"文件大小":x,"文件時長":y})
df結(jié)果如下:

⑤ 將得到的數(shù)據(jù)存儲到Excel中
df.to_excel("info.xlsx",index=False)最終效果如圖所示:

到此這篇關(guān)于詳解Python如何獲取視頻文件的大小和時長的文章就介紹到這了,更多相關(guān)Python獲取視頻大小時長內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python辦公自動化之操控遠(yuǎn)程桌面和文件版本控制
這篇文章主要為大家詳細(xì)介紹了Python辦公自動化中操控遠(yuǎn)程桌面和文件版本控制的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2024-01-01
Python實現(xiàn) 多進程導(dǎo)入CSV數(shù)據(jù)到 MySQL
本文給大家分享的是使用python實現(xiàn)多進程導(dǎo)入CSV文件數(shù)據(jù)到MySQL的思路方法以及具體的代碼分享,有相同需求的小伙伴可以參考下2017-02-02

