c语言编程笔录

首页 >   > 笔记大全

笔记大全

python3怎么实现解析mjpeg http流

更新时间:2023-10-18

背景介绍

在一些应用场景中,需要处理通过MJPEG协议传输的视频流,将其展示在前端界面中。

MJPEG协议介绍

Motion-JPEG (MJPEG) 是一种比较古老的视频压缩格式,它通过将一系列的JPEG图像拼接在一起形成视频流的方式来表达视频内容,每一个JPEG图像即为MJPEG视频的一个“帧(frame)”,MJPEG的视频流就是由一连串的这些帧构成的二进制数据。

MJPEG格式的视频流就是将每个JPEG帧以特定格式拼接成流,通过HTTP协议传输。

解析MJPEG流程

1. 建立http连接,获取MJPEG数据流; 2. 解析数据流,将每个JPEG帧提取出来; 3. 讲提取的JPEG帧进行解码; 4. 将解码后的每个JPEG帧通过canvas元素输出到前端页面中。

代码示例

import requests
from io import BytesIO
from PIL import Image

# Mjpeg流地址
url = "http://192.168.1.101:8080/?action=stream"

# 获取http连接
response = requests.get(url, stream=True)

# 获取图片流数据
stream = response.raw
stream = BytesIO(stream.read())

# 解析图片流并进行解码
image = Image.open(stream)
image.show()