1. 程式人生 > >利用Python子程序 subprocess模組和ffmpeg轉化視訊為圖片

利用Python子程序 subprocess模組和ffmpeg轉化視訊為圖片

動機

剛剛有個需求:將一個檔案下的視訊的所有幀轉化為對應圖片.經過查詢通過ffmpeg相關指令能實現將一個視訊轉化為對應圖片,但在多個檔案下操作幾千個視訊,涉及到檔案操作指令.在終端上寫一兩個命令無法完成操作.寫一個shell指令碼肯定能完成這個任務,但是shell一點也沒接觸過,短時間內也不想研究,經過多番查詢,發現python下一個subprocess模組可以封裝執行終端指令.

簡要介紹

subprocess

subprocess包主要功能是執行外部的命令和程式,正好可以執行終端命令,這點上和shell功能類似.我用了subprocess.call()函式來呼叫執行外部命令,在主程式中啟動一個子程序執行外部指令,父程序等待子程序完成後,返回退出資訊,父程序執行後續程式.簡單指令如下:

subprocess.call(strcmd, shell=True)

strcmd表示終端命令,例如”ls”. shell = True表示Python將先執行一個shell,再用這個shell來解釋這整個字串。

ffmpeg

ffmpeg是一套可以用來記錄、轉換數字音訊、視訊,並能將其轉化為流的開源計算機程式,其功能很強大,一條指令就可以完成簡單的視訊功能需求.例如將一個視訊所有幀轉化為對於圖片指令如下:

ffmpeg -i 00001.M.avi -r 10 -f image2 picture/image%06d.jpg

-i:設定輸入流,00001.M.avi:視訊路徑,可以替換為任意視訊路徑,-r:設定幀速錄,預設為25,-f:設定輸出格式,image2:表示輸出格式為圖片,picture/image%06d.jpg:表示圖片輸出路徑,這裡%06d表示圖片命名格式.

具體實施

import subprocess
strcmd = "ffmpeg -i " + oneVideoPath + " -r 10 -f image2 " + finaliamgeoutput + "/%06d.jpg"
subprocess.call(strcmd, shell=True)

相關推薦

利用Python程序 subprocess模組ffmpeg轉化視訊圖片

動機 剛剛有個需求:將一個檔案下的視訊的所有幀轉化為對應圖片.經過查詢通過ffmpeg相關指令能實現將一個視訊轉化為對應圖片,但在多個檔案下操作幾千個視訊,涉及到檔案操作指令.在終端上寫一兩個命令無法完成操作.寫一個shell指令碼肯定能完成這個任務,但是sh

python學習之-subprocess模組程序模組

什麼是程序 一個程式執行起來了就是一個程序 但是程式本身不是程序,程式是一對程式碼而已 所以程序就是一個抽象的概念,就是程式執行起來的一個過程 程序和程序之間是相互獨立的,互不影響 如何理解子程序和父程序 抽象的說一個QQ程式是一個父程序,word就是一個子程序,兩個互不干預,當然這只是一個比喻

python程序模組subprocess詳解與應用例項 之三

二、應用例項解析 2.1 subprocess模組的使用 1. subprocess.call subprocess.call([“ls”, “-l”]) 0 subprocess.call(“ex

python程序模組subprocess詳解與應用例項 之二

1.2. Popen 物件 Popen類的例項有下列方法: 1. Popen.poll() 檢查子程序是否已經結束,設定並返回返回碼值。 2. Popen.wait() 等待子程序結束,設定並返回返回碼值。 WARNING: 當使用 stdout=P

python程序模組subprocess詳解與應用例項 一

一、subprocess 模組簡介 subprocess最早是在2.4版本中引入的。 subprocess模組用來生成子程序,並可以通過管道連線它們的輸入/輸出/錯誤,以及獲得它們的返回值。 它用來代替多箇舊模組和函式: os.system os.sp

Python程序multiprocessing模組, Process, 程序池PoolQueue

1. multiprocessing模組提供了一個Process類來代表一個程序物件:  (1)   multiprocessing.Process(group=None, target=None, name=None, args=(), kwargs={}, *, daem

利用python中的gzip模組壓縮和解壓資料流檔案

直接給出原始碼實現, 分為兩種情況: 1.網路連線中的資料流的壓縮和解壓,或是開啟的檔案讀取一部分 2.開啟檔案壓縮或是解壓 #!/usr/bin/env python #encoding: utf-8 #filename: gzip_demo.py #author: [

python 建立程序subprocess以及注意的問題(死鎖)

原文 : http://blog.csdn.net/jgood/article/details/4498166 最近,我們老大要我寫一個守護者程式,對伺服器程序進行守護。如果伺服器不幸掛掉了,守護者能即時的重啟應用程式。上網Google了一下,發現Python有很幾個模

利用Python數據分析-NumpyPands篇

單位 另一個 mat transpose 映射文件 nor med mea 隨機 書籍《利用Python進行數據分析》 Numpy--數組及矩陣,矢量計算   1、ndarray多維數組, matrix矩陣   2、針對整組數據進行快速運算的標準數學(統計)函數,(與lis

利用Python寫一個閏年計算器每月天數計算器

!= 案例 inpu 月份 條件 學習 條件判斷 bre 方法 閏年計算器 題目:輸入年份,判斷該年是否為閏年。 方法:1.能被400整除的年份 2.能被4整除,但不能被100整除 1 print(‘---閏年判斷器kq

Python(多程序multiprocessing模組)

day31 http://www.cnblogs.com/yuanchenqi/articles/5745958.html 由於GIL的存在,python中的多執行緒其實並不是真正的多執行緒,如果想要充分地使用多核CPU的資源,在python中大部分情況需要使用多程序。Python提供了非常好用的多程序包

利用python OpenCV呼叫攝像頭模組

import cv2 import numpy as np cap = cv2.VideoCapture(0) while(1): # get a frame ret, frame = cap.read() # show a frame cv2.imshow("ca

python匯入自帶模組自定義模組

模組就是已經開發好的程式碼功能,自己直接匯入進來,直接使用。匯入分為python 或selenium 自帶的模組和自己寫的自定義模組,下面根據這兩個方向寫一下分別匯入的方法。 1.匯入自帶模組import sys #匯入sys模組,呼叫此模組時的方法 print sys.argvfrom sys impor

利用Python進行資料分析——繪圖視覺化(八)(2)

1、註釋以及在Subplot上繪圖 除標準的圖表物件之外,你可能還希望繪製一些自定義的註釋(比如文字、箭頭或其他圖形等)。 註釋可以通過text、arrow和annotate等函式進行新增。text可以將文字繪製在圖表的指定座標(x, y),還可以加上一些自定義格式: In [41]: ax.t

Python中的subprocess模組

一、subprocess以及常用的封裝函式 執行python的時候,我們都是在建立並執行一個程序。像Linux程序那樣,一個程序可以fork一個子程序,並讓這個子程序exec另外一個程式。在Python中,我們通過標準庫中的subprocess包來fork一個子程序,並執行一

利用python實現簡單的httphttps伺服器

http伺服器程式碼: #!/usr/bin/python3 #python version 3.7 import sys from http import server from http.server import SimpleHTTPRequestHandler if sys.ar

Python locale 多語言模組遇到的坑

locale 為計算機上提供了國際化和本地化轉化的環境。 locale 的相關命令 在liunx中,可以通過命令locale檢視當前系統的語言環境。 locale  -a  可以檢視系統支援的locale值 阿里雲訊息佇列使用中遇到的坑 不同語言環境,執行出的結

python程序不支援input函式

問題 寫多程序程式的時候,在子程序呼叫的函式內部呼叫了input函式,提示EOFError: EOF when reading a line,具體如下錯誤: 抽象出來的程式碼如下: #encoding=utf-8 from multiprocessing import Pool,P

python程序subprocess與管道pipe

一 程式的stdin,stdout,stderr+redirect+pipe程式的stdin,stdout,stderr:通常地一個應用程式預設地連線有3個io流,分別為stdin標準輸入流,stdout標準輸出流,stderr標準錯誤輸出流。在程式中我們可以使用它們的控制代

python筆記(配置檔案模組配置日誌模組)

一、配置檔案模組:configparser 1、寫入配置檔案 import configparser config = configparser.ConfigParser() config["名字"] = {'xiaoxiao':'18', 'dada':