視頻流編解碼
0. 視頻流 + 音頻流(音頻流編碼格式acc,音頻流和視頻流是完全沒有交集的東西) = 文件
1. rgb像素圖像(視頻流) ---------視頻流編碼(如視頻流編碼采用Mpeg格式)--------->放到文件容器里(容器格式有.avi,.mp4等)
2. 視頻文件容器--------視頻解碼器(視頻播放器)------>觀看
主流的視頻編碼格式有Mpeg系列及H26x系列(如acv1)
最新的主流編碼格式H264就是二者發展的融合格式,對應Mpeg的最新Part10系列.
編碼后的流是一塊一塊組織塞到文件容器里的,具體怎么塞決定了最終的文件容器格式,如avi mp4格式等
import cv2
path = "D:/pose.mp4"
stream = cv2.VideoCapture(path)
assert stream.isOpened(), 'Cannot capture source'
fourcc=int(stream.get(cv2.CAP_PROP_FOURCC))# opencv得到視頻流的編碼格式(code格式),最重要的兩種是H26x系列(H264)和mpeg格式
#無論采用什么協議傳輸,在流的編碼過程中已經完成了流的數據格式確定,在流的網絡傳輸時是不能進行改變的,即常說的傳輸協議其實就是編碼格式
fps=stream.get(cv2.CAP_PROP_FPS)# 視頻幀率
frameSize=(int(stream.get(cv2.CAP_PROP_FRAME_WIDTH)),int(stream.get(cv2.CAP_PROP_FRAME_HEIGHT)))#每幀的w h
datalen = int(stream.get(cv2.CAP_PROP_FRAME_COUNT))# 視頻流的總幀數
print(fourcc)
print(chr(fourcc&0xFF) + chr((fourcc>>8)&0xFF) + chr((fourcc>>16)&0xFF) + chr((fourcc>>24)&0xFF))
print(fps)
print(frameSize)
print(datalen)
"""
828601953
"avc1"
30.0
(1920, 1080)
522
"""
