Python實現獲取視頻時長功能
前言
本文提供獲取視頻時長的python代碼,精確到毫秒,一如既往的實用主義。
環境依賴
ffmpeg環境安裝,可以參考:windows ffmpeg安裝部署
本文主要使用到的不是ffmpeg,而是ffprobe也在上面這篇文章中的zip包中。
代碼
不廢話,上代碼。
#!/user/bin/env python # coding=utf-8 """ @project : csdn @author : 劍客阿良_ALiang @file : get_video_duration.py @ide : PyCharm @time : 2021-12-23 13:52:33 """ import os import subprocess def get_video_duration(video_path: str): ext = os.path.splitext(video_path)[-1] if ext != '.mp4' and ext != '.avi' and ext != '.flv': raise Exception('format not support') ffprobe_cmd = 'ffprobe -i {} -show_entries format=duration -v quiet -of csv="p=0"' p = subprocess.Popen( ffprobe_cmd.format(video_path), stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) out, err = p.communicate() print("subprocess 執行結果:out:{} err:{}".format(out, err)) duration_info = float(str(out, 'utf-8').strip()) return int(duration_info * 1000) if __name__ == '__main__': print('視頻的duration為:{}ms'.format(get_video_duration('D:/tmp/100.mp4')))
代碼說明:
1、對視頻的後綴格式做瞭簡單的校驗,如果需要調整可以自己調整一下。
2、對輸出的結果做瞭處理,輸出int類型的數據,方便使用。
驗證一下
準備的視頻如下:
驗證一下
補充
Python實現獲取視頻fps
#!/user/bin/env python # coding=utf-8 """ @project : csdn @author : 劍客阿良_ALiang @file : get_video_fps.py @ide : PyCharm @time : 2021-12-23 11:21:07 """ import os import subprocess def get_video_fps(video_path: str): ext = os.path.splitext(video_path)[-1] if ext != '.mp4' and ext != '.avi' and ext != '.flv': raise Exception('format not support') ffprobe_cmd = 'ffprobe -v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=r_frame_rate {}' p = subprocess.Popen( ffprobe_cmd.format(video_path), stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) out, err = p.communicate() print("subprocess 執行結果:out:{} err:{}".format(out, err)) fps_info = str(out, 'utf-8').strip() if fps_info: if fps_info.find("/") > 0: video_fps_str = fps_info.split('/', 1) fps_result = int(int(video_fps_str[0]) / int(video_fps_str[1])) else: fps_result = int(fps_info) else: raise Exception('get fps error') return fps_result if __name__ == '__main__': print('視頻的fps為:{}'.format(get_video_fps('D:/tmp/100.mp4')))
代碼說明:
1、首先對視頻格式做瞭簡單的判斷,這部分可以按照需求自行調整。
2、通過subprocess進行命令調用,獲取命令返回的結果。註意范圍的結果為字節串,需要調整格式處理。
驗證一下
下面是準備的素材視頻,fps為25,看一下執行的結果。
執行結果
到此這篇關於Python實現獲取視頻時長功能的文章就介紹到這瞭,更多相關Python獲取視頻時長內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Python爬取視頻時長場景實踐示例
- Python中使用subprocess庫創建附加進程
- php如何利用ffmpeg獲取視頻第一幀為縮略圖
- python中subprocess實例用法及知識點詳解
- Python 如何實現批量轉換視頻音頻的采樣率