libcamera-vid -t 0 --codec mjpeg -o - | \ ffmpeg -f mjpeg -i - -c:v copy -f rtsp rtsp://localhost:8554/stream由Python接收
时间: 2025-04-03 18:01:34 浏览: 31
### 接收由 `libcamera-vid` 和 `FFmpeg` 生成的 RTSP 流
要通过 Python 接收由 `libcamera-vid` 和 FFmpeg 生成的 RTSP 流,可以利用 OpenCV 库来处理视频流数据。OpenCV 提供了一个简单的方法读取网络摄像头或 IP 摄像头的 RTSP 流,并将其转换为帧以便进一步处理。
以下是具体方法:
#### 使用 OpenCV 处理 RTSP 流
OpenCV 的 VideoCapture 类支持从 RTSP 协议获取视频流。只需提供 RTSP URL 并调用其 `.read()` 方法即可逐帧捕获图像。
```python
import cv2
def receive_rtsp_stream(rtsp_url):
# 创建 VideoCapture 对象并传递 RTSP 地址
cap = cv2.VideoCapture(rtsp_url)
if not cap.isOpened():
print("无法打开 RTSP 流")
exit()
while True:
ret, frame = cap.read()
if not ret:
print("未能抓取到一帧,退出循环...")
break
# 显示当前帧
cv2.imshow('RTSP Stream', frame)
# 如果按下 'q' 键,则停止播放
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release() # 关闭资源
cv2.destroyAllWindows()
if __name__ == "__main__":
rtsp_url = "rtsp://your.rtsp.stream.address"
receive_rtsp_stream(rtsp_url)
```
上述代码展示了如何连接至指定的 RTSP 路径,并持续显示每一帧的画面。如果需要保存这些帧或者对其进行其他操作(如分析),可以在每次成功读取后执行额外逻辑[^3]。
#### 配置环境变量以运行 FFMPEG
为了确保能够顺利使用 FFmpeg 进行编码或其他多媒体任务,在 Windows 上需将解压后的 FFmpeg 可执行文件路径添加到系统的 PATH 环境变量中。这一步骤已在引用说明中提及过[^1]。完成此设置后可以从命令行直接调用 `ffmpeg` 命令而无需指明完整路径。
#### 实现低延迟推流 (Optional)
对于追求更低延时的应用场景,除了传统的 RTSP 方案外还可以考虑采用 WebSocket 结合 JSMpeg 技术栈作为前端展示手段之一。这种方式已被证明能有效降低端到端传输时间至约半秒级别[^2]。不过需要注意的是这种架构通常涉及更多组件协作比如 Node.js 后端服务负责管理 WS 连接状态以及重新封装媒体包等内容。
---
###
阅读全文
相关推荐


















