python--openCV--視頻處理


 

編碼格式

視頻容器中,一般有視頻和音頻數據,它們采取的編碼方式不一樣。

視頻常見的編碼方式通常有: x264、h264、mpeg-4

音頻常見的編碼方式通常有: mp3、AAC、flac

編碼的目的主要是為了高效存儲和傳輸,如果你不采用編碼壓縮的話,那么視頻可以看做是一系列的圖片序列,體積會非常大

FPS 幀率

我們讀初中物理時,大概了解過電影畫面一秒鍾 24 幀,其實對應的就是 24 fps,frame per second,有些手機有高速攝像的功能,原理就是能夠 1 秒鍾拍攝 960 張圖片,然后用正常的速度放映出來,所以細節比較多。fps 越高,細節越好,體驗也越好,但是文件容量也越高

 

 播放:

import cv2
cap = cv2.VideoCapture("1.mp4")  #打開視頻
while (1):
    ret, frame = cap.read()  # 讀取一幀視頻
    # ret 讀取了數據就返回True,沒有讀取數據(已到尾部)就返回False
    # frame 返回讀取的視頻數據--一幀數據
    cv2.imshow("capture", frame)  # 顯示視頻幀

    if cv2.waitKey(40) & 0xFF == ord('q'):  # 等候40ms,播放下一幀,或者按q鍵退出
        break
cap.release()  # 釋放視頻流
cv2.destroyAllWindows() # 關閉所有窗口

 

寫入視頻文件:

import cv2

cap = cv2.VideoCapture("1.mp4")
ret, frame = cap.read()
height=frame.shape[0]
width=frame.shape[1]
fps = cap.get(cv2.CAP_PROP_FPS)  #返回視頻的fps--幀率
size=cap.get(cv2.CAP_PROP_FRAME_WIDTH)  #返回視頻的寬,等同於frame.shape[1]
size1=cap.get(cv2.CAP_PROP_FRAME_HEIGHT)  #返回視頻的高,等同於frame.shape[0]


video = cv2.VideoWriter('2.mp4', cv2.VideoWriter_fourcc('m', 'p', '4', 'v'), fps, (width,height)) #創建視頻流對象
"""
參數1 即將保存的文件路徑
參數2 VideoWriter_fourcc為視頻編解碼器
    fourcc意為四字符代碼(Four-Character Codes),顧名思義,該編碼由四個字符組成,下面是VideoWriter_fourcc對象一些常用的參數,注意:字符順序不能弄混
    cv2.VideoWriter_fourcc('I', '4', '2', '0'),該參數是YUV編碼類型,文件名后綴為.avi 
    cv2.VideoWriter_fourcc('P', 'I', 'M', 'I'),該參數是MPEG-1編碼類型,文件名后綴為.avi 
    cv2.VideoWriter_fourcc('X', 'V', 'I', 'D'),該參數是MPEG-4編碼類型,文件名后綴為.avi 
    cv2.VideoWriter_fourcc('T', 'H', 'E', 'O'),該參數是Ogg Vorbis,文件名后綴為.ogv 
    cv2.VideoWriter_fourcc('F', 'L', 'V', '1'),該參數是Flash視頻,文件名后綴為.flv
    cv2.VideoWriter_fourcc('m', 'p', '4', 'v')    文件名后綴為.mp4
參數3 為幀播放速率
參數4 (width,height)為視頻幀大小
"""
while (1):
    ret, frame = cap.read()
    cv2.imshow("capture", frame)
    video.write(frame)   # 向視頻文件寫入一幀--只有圖像,沒有聲音

    if cv2.waitKey(40) & 0xFF == ord('q'):  # 等候40ms,播放下一幀,或者按q鍵退出
        break
cap.release()  # 釋放視頻流
cv2.destroyAllWindows()   # 關閉所有窗口

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM