使用OpenCV、FFmpeg和Python将流媒体视频转换为HLS格式(IOS支持)

问题描述 投票:0回答:0

我是初学者,我正在尝试解决以下问题:

我使用 uvicorn 和 Python 制作了一个 API 端点:

@app.get("/api/v1/stream")
async def stream(quality: int = 40):
    return StreamingResponse(
        controller.get_data(quality),
        media_type="multipart/x-mixed-replace; boundary=frame",
    )

我的 StreamController 和 get.data 函数如下所示:

import cv2

capture = cv2.VideoCapture(0)
capture.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'))
class StreamController:
    def get_data(self, quality: int):

        while True:
            yield self.capture_frame(quality)

    def capture_frame(self, quality: int):
        success, frame = capture.read()

        if success is False:
            return
        else:
            _, buffer = cv2.imencode(
                ".jpeg", frame, [int(cv2.IMWRITE_JPEG_QUALITY), quality]
            )
            frame = buffer.tobytes()
            return b"--frame\r\n" b"Content-Type: image/jpeg\r\n\r\n" + frame + b"\r\n"

您能告诉我或帮助我了解如何使用 FFmpeg 和 OpenCV 将此流转换为 HLS 格式作为输出吗? 目前我正在返回 JPEG 格式,IOS 不支持该格式,但此流应该在 iPad 设备上可用。

感谢您的帮助!

附注我正在研究Linux操作系统

python linux opencv ffmpeg streaming
© www.soinside.com 2019 - 2024. All rights reserved.