我是初学者,我正在尝试解决以下问题:
我使用 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操作系统