簡介
-
FFmpeg是一套可以用來記錄、轉換數字音頻、視頻,並能將其轉化爲流的開源計算機程序。
-
流文件(可在線拉進度)
-
ffmpeg需要下載,並解壓將3個文件放至Python安裝目錄中的bin目錄下,然後還要配置環境變量
-
官網下載
-
下載安裝可參考:
https://www.cnblogs.com/Neeo/articles/11677715.html
-
騷操作可參考:
https://www.jianshu.com/p/93d08fe43dff
從視頻中提取音頻
- 在終端下直接執行: “ffmpeg -i test.mp4 -f mp3 -vn test.mp3”,將"test.MP4"文件中的音頻文件提取出來
- 在代碼中操作,需要先導包:import subprocess
下面代碼等同於在上面的終端操作:
1、 os.system() #可執行系統命令
or
2、 subprocess.call()
subprocess.call('ffmpeg -i ../data/1.mp4 -f mp3 -vn 2.mp3')
輸出爲0表示操作成功
視頻截取
-ss表示開始位置,-t表示結束位置
subprocess.call('ffmpeg -ss 00:00:10 -i ../data/law.mp4 -acodec copy -vcodec copy -t 00:00:40 output.mp4')
從視頻中提取無聲視頻
subprocess.call('ffmpeg -i ../data/1.mp4 -vcodec copy -an 2.mp4')
合併視頻和音頻
慢,消耗性能
subprocess.call('ffmpeg -i 2.mp3 -i 2.mp4 out.mp4')
擴展
mp3數據
- 使用pydub+ ffmpeg處理mp3文件,參考上一篇
mp4數據
import numpy as np
import cv2
cap = cv2.VideoCapture('./law.mp4')
while(cap.isOpened()):
ret, frame = cap.read()
try :
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
except Exception as e:
print(e)
break
cv2.imshow('frame',gray)
if cv2.waitKey(1) &0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
看到一篇有意思的關於cv2.VideoCapture()操作的文章:《python - 截取指定幀數間隔的視頻,並保存圖片到指定位置》
https://blog.csdn.net/qq_38214193/article/details/80997924