如何使用OpenCV RTMP直播推流

前提

安裝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的樹莓派。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章