Python實(shí)現(xiàn)統(tǒng)計(jì)mp4/avi視頻的時(shí)長(zhǎng)
介紹導(dǎo)入的庫(kù)
當(dāng)代碼中導(dǎo)入了特定的庫(kù),它會(huì)使得在代碼中可以使用該庫(kù)所提供的功能和工具。以下是導(dǎo)入的兩個(gè)庫(kù)及其作用的解釋:
import os
os(Operating System)是Python標(biāo)準(zhǔn)庫(kù)之一,提供了與操作系統(tǒng)交互的功能。它允許您在代碼中執(zhí)行各種與文件和目錄操作相關(guān)的任務(wù),例如創(chuàng)建、刪除、移動(dòng)文件,獲取文件屬性,以及與操作系統(tǒng)進(jìn)行交互等。在這個(gè)代碼中,os庫(kù)被用于執(zhí)行文件和目錄的遍歷操作,從而計(jì)算指定文件夾中視頻文件的總時(shí)長(zhǎng)。
import moviepy.editor as mp
moviepy是一個(gè)用于處理視頻和音頻的Python庫(kù),它提供了一組功能豐富的工具,可以用來(lái)編輯、剪輯、合并和轉(zhuǎn)換視頻和音頻文件。其中,moviepy.editor模塊提供了視頻編輯的基本功能,例如加載視頻文件、獲取視頻時(shí)長(zhǎng)等。在這個(gè)代碼中,mp是moviepy.editor的別名,通過(guò)這個(gè)別名,我們可以使用moviepy庫(kù)的功能來(lái)讀取視頻文件并獲取視頻的時(shí)長(zhǎng)。
總結(jié)
os庫(kù)允許代碼與操作系統(tǒng)進(jìn)行文件和目錄操作,而moviepy.editor庫(kù)則允許代碼加載視頻文件并執(zhí)行視頻編輯和處理的相關(guān)操作。這兩個(gè)庫(kù)的結(jié)合使得代碼能夠遍歷指定文件夾中的視頻文件并計(jì)算總時(shí)長(zhǎng)。
代碼
代碼即注釋,每一行也提供了注釋:
# 導(dǎo)入必要的庫(kù) import os import moviepy.editor as mp # 定義一個(gè)函數(shù),用于計(jì)算指定文件夾中視頻的總時(shí)長(zhǎng) def get_total_duration(folder_path, video_formats=['mp4', 'avi']): total_duration = 0 # 用于存儲(chǔ)視頻總時(shí)長(zhǎng)的變量(單位:秒) # 遞歸地遍歷指定文件夾及其子文件夾 for root, dirs, files in os.walk(folder_path): for file in files: # 檢查文件是否具有指定格式的視頻文件 if file.lower().endswith(tuple(video_formats)): file_path = os.path.join(root, file) # 獲取視頻文件的完整路徑 try: # 使用 moviepy 的 VideoFileClip 加載視頻文件 clip = mp.VideoFileClip(file_path) total_duration += clip.duration # 將視頻時(shí)長(zhǎng)加入總時(shí)長(zhǎng) except Exception as e: # 如果處理視頻時(shí)發(fā)生錯(cuò)誤,則打印錯(cuò)誤信息 print(f"處理 {file_path} 時(shí)出錯(cuò): {e}") return total_duration # 返回所有視頻總時(shí)長(zhǎng)(單位:秒) # 定義一個(gè)函數(shù),用于將總秒數(shù)轉(zhuǎn)換為時(shí)、分、秒格式 def seconds_to_hours_minutes_seconds(seconds): hours, remainder = divmod(seconds, 3600) minutes, seconds = divmod(remainder, 60) return int(hours), int(minutes), int(seconds) # 腳本的入口點(diǎn) if __name__ == "__main__": # 指定包含視頻的文件夾路徑 folder_path = r"你的文件路徑" # 調(diào)用 get_total_duration 函數(shù)計(jì)算文件夾中視頻的總時(shí)長(zhǎng) total_duration = get_total_duration(folder_path, video_formats=['mp4', 'avi']) # 將總時(shí)長(zhǎng)從秒數(shù)轉(zhuǎn)換為時(shí)、分、秒格式 total_hours, total_minutes, total_seconds = seconds_to_hours_minutes_seconds(total_duration) # 以人類可讀的格式顯示總時(shí)長(zhǎng) if total_hours > 0: print(f"文件夾中所有視頻的總時(shí)長(zhǎng)為: {total_hours} 小時(shí) {total_minutes} 分鐘 {total_seconds} 秒") print(f"文件夾中所有視頻的總時(shí)長(zhǎng)為: {total_hours * 60 + total_minutes} 分鐘 {total_seconds} 秒") else: print(f"文件夾中所有視頻的總時(shí)長(zhǎng)為: {total_minutes} 分鐘 {total_seconds} 秒")
到此這篇關(guān)于Python實(shí)現(xiàn)統(tǒng)計(jì)mp4/avi視頻的時(shí)長(zhǎng)的文章就介紹到這了,更多相關(guān)Python統(tǒng)計(jì)視頻時(shí)長(zhǎng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 實(shí)現(xiàn)一次性在文件中寫入多行的方法
今天小編就為大家分享一篇python 實(shí)現(xiàn)一次性在文件中寫入多行的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01python 批量添加的button 使用同一點(diǎn)擊事件的方法
今天小編就為大家分享一篇python 批量添加的button 使用同一點(diǎn)擊事件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07Python調(diào)用REST API接口的幾種方式匯總
這篇文章主要介紹了Python調(diào)用REST API接口的幾種方式匯總,幫助大家更好的利用python進(jìn)行自動(dòng)化運(yùn)維,感興趣的朋友可以了解下2020-10-10Python調(diào)用DeepSeek?API實(shí)現(xiàn)對(duì)本地?cái)?shù)據(jù)庫(kù)的AI管理
這篇文章主要為大家詳細(xì)介紹了Python如何基于DeepSeek模型實(shí)現(xiàn)對(duì)本地?cái)?shù)據(jù)庫(kù)的AI管理,文中的示例代碼簡(jiǎn)潔易懂,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-02-02Python中JSON常見(jiàn)用法(json.load()、json.loads()、json.dump()、json.du
本文主要介紹了Python中JSON常見(jiàn)用法(json.load()、json.loads()、json.dump()、json.dumps()),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06解決python3中的requests解析中文頁(yè)面出現(xiàn)亂碼問(wèn)題
requests是一個(gè)很實(shí)用的Python HTTP客戶端庫(kù),編寫爬蟲和測(cè)試服務(wù)器響應(yīng)數(shù)據(jù)時(shí)經(jīng)常會(huì)用到。這篇文章給大家介紹了解決python3中的requests解析中文頁(yè)面出現(xiàn)亂碼問(wèn)題,感興趣的朋友一起看看吧2019-04-04python使用cartopy在地圖中添加經(jīng)緯線的示例代碼
gridlines可以根據(jù)坐標(biāo)系,自動(dòng)繪制網(wǎng)格線,這對(duì)于普通繪圖來(lái)說(shuō)顯然不必單獨(dú)拿出來(lái)說(shuō)說(shuō),但在地圖中,經(jīng)緯線幾乎是必不可少的,本文將給大家介紹了python使用cartopy在地圖中添加經(jīng)緯線的方法,需要的朋友可以參考下2024-01-01