前提
安裝Python環境、安裝OpenCV、安裝安裝FFmpeg並添加到系統環境變量
代碼
# 需先自行安裝FFmpeg,並添加環境變量
import cv2
import subprocess
# RTMP服務器地址
rtmp = r'rtmp://txy.live-send.acg.tv/live-txy/'
# 讀取視頻並獲取屬性
cap = cv2.VideoCapture(0)
size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
sizeStr = str(size[0]) + 'x' + str(size[1])
command = ['ffmpeg',
'-y', '-an',
'-f', 'rawvideo',
'-vcodec','rawvideo',
'-pix_fmt', 'bgr24',
'-s', sizeStr,
'-r', '25',
'-i', '-',
'-c:v', 'libx264',
'-pix_fmt', 'yuv420p',
'-preset', 'ultrafast',
'-f', 'flv',
rtmp]
pipe = subprocess.Popen(command, shell=False, stdin=subprocess.PIPE
)
while cap.isOpened():
success, frame = cap.read()
if success:
if cv2.waitKey(1) & 0xFF == ord('q'):
break
pipe.stdin.write(frame.tostring())
cap.release()
pipe.terminate()
測試
以嗶哩嗶哩平臺爲例。
RTMP是什麼?
RTMP是Real Time Messaging Protocol(實時消息傳輸協議)的首字母縮寫。該協議基於TCP,是一個協議族,包括RTMP基本協議及RTMPT/RTMPS/RTMPE等多種變種。RTMP是一種設計用來進行實時數據通信的網絡協議,主要用來在Flash/AIR平臺和支持RTMP協議的流媒體/交互服務器之間進行音視頻和數據通信。支持該協議的軟件包括Adobe Media Server/Ultrant Media Server/red5等。RTMP與HTTP一樣,都屬於TCP/IP四層模型的應用層。
樹莓派是什麼?
Raspberry Pi(中文名爲“樹莓派”,簡寫爲RPi,(或者RasPi / RPI)是爲學習計算機編程教育而設計),只有信用卡大小的微型電腦,其系統基於Linux。隨着Windows 10 IoT的發佈,我們也將可以用上運行Windows的樹莓派。