python視頻處理
A. 如何用python實現視頻關鍵幀提取並保存為圖片
參考代碼如下:
import
cv2
vc
=
cv2.VideoCapture('Test.avi')
#讀入視頻文件
c=1
if
vc.isOpened():
#判斷是否正常打開
rval
,
frame
=
vc.read()
else:
rval
=
False
timeF
=
1000
#視頻幀計數間隔頻率
while
rval:
#循環讀取視頻幀
rval,
frame
=
vc.read()
if(c%timeF
==
0):
#每隔timeF幀進行存儲操作
cv2.imwrite('image/'+str(c)
+
'.jpg',frame)
#存儲為圖像
c
=
c
+
1
cv2.waitKey(1)
vc.release()
B. python如何用opencv把一個視頻按每10秒一小段切下來
你好,下面是相應的一個代碼,你可以參考一下:
importcv2
importos
#先導入openCV
#將一個長的視頻縮短,按照比例縮短,只保存其中的一部分
#如下面代碼就是將一個長視頻每10秒取10秒,合並成一個短視頻
cap=cv2.VideoCapture('myvideo.avi')
ifnotcap.isOpened():
print('videoisnotopened')
else:
#每秒25幀
num=0
#取10秒
needTime=250
#每10秒
timeSpace=250
#獲取視頻幀率
fps=cap.get(cv2.CAP_PROP_FPS)
#AVI格式編碼輸出XVID
videoWriter=cv2.VideoWriter('result//resultVideo_2.avi',cv2.VideoWriter_fourcc('X','V','I','D'),fps,frameSize=(320,288))
while(1):
success,frame=cap.read()
if(num%timeSpace<=needTime):
videoWriter.write(frame)
print('write'+str(num))
num=num+1
ifnotsuccess:
print('finished')
break
ifcv2.waitKey(100)&0xFF==ord('q'):
break
cap.release()
C. ffmpeg-python中文文檔(三)——API參考
表示上游節點的傳出邊緣;可以用來創建更多的下游節點。
輸入文件 URL (ffmpeg -i option)
在一個 ffmpeg 命令行中包含所有給定的輸出
輸出文件地址
不詢問就覆蓋輸出文件(ffmpeg -y 選項)
在指定文件上運行 ffprobe 並返回輸出的 JSON 表示。
構建用於調用 ffmpeg 的命令行。
構建要傳遞給 ffmpeg 的命令行參數。
為提供的節點圖調用 ffmpeg 。
參數
為提供的節點圖非同步調用 ffmpeg。
參數
例子
運行和流式輸入:
運行並捕獲輸出:
使用 numpy 逐幀處理視頻:
通過重新混合顏色通道來調整視頻輸入幀。
連接音頻和視頻流,將它們一個接一個地連接在一起。
篩選器適用於同步視頻和音頻流的片段。所有段必須具有每種類型的相同數量的流,這也是輸出時的流數。
參數
裁剪輸入視頻。
參數
在輸入圖像上繪制一個彩色框。
參數
使用 libfreetype 庫從視頻頂部的指定文件中繪制文本字元串或文本。
要啟用此過濾器的編譯,您需要使用 --enable-libfreetype . 要啟用默認字體回退和字體選項,您需要使用 --enable-libfontconfig . 要啟用 text_shaping 選項,您需要使用 --enable-libfribidi
參數
· box - 用於使用背景顏色在文本周圍繪制一個框。該值必須是 1(啟用)或 0(禁用)。框的默認值為 0。
· boxborderw – 使用 boxcolor 設置要在框周圍繪制的邊框寬度。boxborderw 的默認值為 0。
· boxcolor - 用於在文本周圍繪制框的顏色。有關此選項的語法,請查看 ffmpeg-utils 手冊中的「顏色」部分。 boxcolor 的默認值為「white」。
· line_spacing – 使用 box 設置要在框周圍繪制的邊框的行間距(以像素為單位)。line_spacing 的默認值為 0。
· borderw – 使用邊框顏色設置要在文本周圍繪制的邊框寬度。邊框的默認值為 0。
· bordercolor – 設置用於在文本周圍繪制邊框的顏色。有關此選項的語法,請查看 ffmpeg-utils 手冊中的「顏色」部分。邊框顏色的默認值為「黑色」。
· 擴展- 選擇文本的擴展方式。可以是 none、strftime(已棄用)或 normal(默認)。有關詳細信息,請參閱下面的文本擴展部分。
· basetime – 設置計數的開始時間。值以微秒為單位。僅適用於已棄用的 strftime 擴展模式。要在正常擴展模式下進行模擬,請使用 pts 函數,提供開始時間(以秒為單位)作為第二個參數。
· fix_bounds - 如果為 true,檢查並修復文本坐標以避免剪切。
· fontcolor - 用於繪制字體的顏色。有關此選項的語法,請查看 ffmpeg-utils 手冊中的「顏色」部分。fontcolor 的默認值為「黑色」。
· fontcolor_expr – 與文本相同的擴展字元串以獲得動態字體顏色值。默認情況下,此選項具有空值並且不被處理。設置此選項時,它會覆蓋 fontcolor 選項。
· font - 用於繪制文本的字體系列。默認情況下無。
· fontfile – 用於繪制文本的字體文件。必須包含路徑。如果禁用了 fontconfig 支持,則此參數是必需的。
· alpha – 繪制應用 alpha 混合的文本。該值可以是介於 0.0 和 1.0 之間的數字。該表達式也接受相同的變數 x、y。默認值為 1。請參閱 fontcolor_expr。
· fontsize – 用於繪制文本的字體大小。字體大小的默認值為 16。
· text_shaping – 如果設置為 1,則在繪制文本之前嘗試對文本進行整形(例如,反轉從右到左文本的順序並加入阿拉伯字元)。否則,只需按照給定的方式繪制文本。默認為 1(如果支持)。
· ft_load_flags –用於載入字體的標志。這些標志映射了 libfreetype 支持的相應標志,並且是以下值的組合:
默認值為「默認」。有關更多信息,請參閱 FT_LOAD_* libfreetype 標志的文檔。
· shadowcolor – 用於在已繪制文本後面繪制陰影的顏色。有關此選項的語法,請查看 ffmpeg-utils 手冊中的「顏色」部分。shadowcolor 的默認值為「黑色」。
· shadowx – 文本陰影位置相對於文本位置的 x 偏移量。它可以是正值或負值。默認值為「0」。
· shadowy – 文本陰影位置相對於文本位置的 y 偏移量。它可以是正值或負值。默認值為「0」。
· start_number – n/frame_num 變數的起始幀號。默認值為「0」。
· tabsize - 用於呈現選項卡的空格數大小。默認值為 4。
· timecode – 以「hh:mm:ss[:;.]ff」格式設置初始時間碼表示。它可以帶或不帶文本參數使用。必須指定 timecode_rate 選項。
· rate – 設置時間碼幀率(僅限時間碼)。
· timecode_rate – 的別名rate。
· r – 的別名rate。
· tc24hmax – 如果設置為 1,時間碼選項的輸出將在 24 小時左右回繞。默認值為 0(禁用)。
· text -- 要繪制的文本字元串。文本必須是 UTF-8 編碼字元序列。如果沒有使用參數 textfile 指定文件,則此參數是必需的。
· textfile – 包含要繪制的文本的文本文件。文本必須是 UTF-8 編碼字元序列。如果沒有使用參數 text 指定文本字元串,則此參數是必需的。如果同時指定了 text 和 textfile,則會引發錯誤。
· reload – 如果設置為 1,文本文件將在每一幀之前重新載入。一定要自動更新它,否則它可能會被部分讀取,甚至失敗。
· x – 指定將在視頻幀內繪制文本的偏移量的表達式。它相對於輸出圖像的左邊框。默認值為「0」。
· y - 指定將在視頻幀內繪制文本的偏移量的表達式。它相對於輸出圖像的上邊框。默認值為「0」。有關接受的常量和函數的列表,請參見下文。
表達式常量:
x 和 y 的參數是包含以下常量和函數的表達式:
· dar:輸入顯示縱橫比,同 (w / h) * sar
· hsub:水平色度子樣本值。例如,對於像素格式「yuv422p」,hsub 為 2,vsub 為 1。
· vsub:垂直色度子樣本值。例如,對於像素格式「yuv422p」,hsub 為 2,vsub 為 1。
· line_h:每個文本行的高度
· lh:別名為line_h.
· main_h:輸入高度
· h: 的別名main_h。
· H: 的別名main_h。
· main_w:輸入寬度
· w: 的別名main_w。
· W: 的別名main_w。
· ascent:對於所有渲染的字形,從基線到用於放置字形輪廓點的最高/上網格坐標的最大距離。這是一個正值,因為網格的 Y 軸向上。
· max_glyph_a: 的別名ascent。
· 下降:對於所有渲染的字形,從基線到用於放置字形輪廓點的最低網格坐標的最大距離。由於網格的方向,這是一個負值,Y 軸向上。
· max_glyph_d: 的別名descent。
· max_glyph_h:最大字形高度,即渲染文本中包含的所有字形的最大高度,相當於上升-下降。
· max_glyph_w:最大字形寬度,即渲染文本中包含的所有字形的最大寬度。
· n:輸入幀數,從0開始
· rand(min, max):返回一個包含在 min 和 max 之間的隨機數
· sar:輸入樣本縱橫比。
· t:時間戳,以秒為單位,如果輸入時間戳未知,則為 NAN
· text_h:渲染文本的高度
· th: 的別名text_h。
· text_w:渲染文本的寬度
· tw: 的別名text_w。
· x:繪制文本的 x 偏移坐標。
· y:繪制文本的 y 偏移坐標。
這些參數允許 x 和 y 表達式相互引用,因此您可以例如指定 y=x/dar.
應用自定義過濾器。
filter通常由更高級別的過濾器函數使用,例如 hflip ,但如果缺少過濾器實現 ffmpeg-python ,您可以 filter 直接調用以 ffmpeg-python 將過濾器名稱和參數逐字傳遞給 ffmpeg 。
參數
函數名稱後綴_是為了避免與標准 pythonfilter 函數混淆。
例子
替代名稱 filter ,以免與內置的 pythonfilter 運算符沖突。
應用具有一個或多個輸出的自定義過濾器。
這 filter 與過濾器可以產生多個輸出相同。
要引用輸出流,請使用 .stream 運算符或括弧簡寫:
例子
水平翻轉輸入視頻。
修改輸入的色調和/或飽和度。
參數
將一個視頻疊加在另一個視頻之上。
參數
更改輸入幀的 PTS(表示時間戳)。
FFmpeg里有兩種時間戳:DTS(Decoding Time Stamp)和PTS(Presentation Time Stamp)。 顧名思義,前者是解碼的時間,後者是顯示的時間。
參數
修剪輸入,使輸出包含輸入的一個連續子部分。
參數
垂直翻轉輸入視頻。
應用縮放和平移效果。
參數