gpt4 book ai didi

python - 在 python 中从 jpeg 图像创建一个 mjpeg 流

转载 作者:太空狗 更新时间:2023-10-29 20:54:14 24 4
gpt4 key购买 nike

我需要提供实时图表,我想通过 http 传送 mjpeg 流(这样可以很容易地通过使用普通标记将图表包含在网页中)。

是否可以从多个 jpeg 图像实时创建一个 mjpeg 流?

我的策略是:

  1. 输出正确的 http header :

    Cache-Control:no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0
    Connection:close
    Content-Type:multipart/x-mixed-replace;boundary=boundarydonotcross
    Expires:Mon, 3 Jan 2000 12:34:56 GMT
    Pragma:no-cache
    Server:MJPG-Streamer/0.2

    (从 curl -I {on a mjpeg-streamer instance} 得到它,但这看起来很奇怪)

  2. 简单地生成连续的 jpeg 图像二进制文件,注意:

    • 在流的开头添加正确的 header (就像 mjpeg-streamer 所做的那样):

      Content-Type: image/jpeg
      Content-Length: 5427
      X-Timestamp: 3927662.086099
    • 在每个 jpeg 流的末尾附加边界字符串。

      --boudary--

问题:

你做到了吗,

你知道一个 python 模块吗,

你觉得这样行吗

你有什么建议吗?

最佳答案

我让它作为概念验证工作:https://github.com/damiencorpataux/pymjpeg

为了内存:

import os, time
from glob import glob
import sys
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler

boundary = '--boundarydonotcross'

def request_headers():
return {
'Cache-Control': 'no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0',
'Connection': 'close',
'Content-Type': 'multipart/x-mixed-replace;boundary=%s' % boundary,
'Expires': 'Mon, 3 Jan 2000 12:34:56 GMT',
'Pragma': 'no-cache',
}

def image_headers(filename):
return {
'X-Timestamp': time.time(),
'Content-Length': os.path.getsize(filename),
#FIXME: mime-type must be set according file content
'Content-Type': 'image/jpeg',
}

# FIXME: should take a binary stream
def image(filename):
with open(filename, "rb") as f:
# for byte in f.read(1) while/if byte ?
byte = f.read(1)
while byte:
yield byte
# Next byte
byte = f.read(1)

# Basic HTTP server
class MyHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
# Response headers (multipart)
for k, v in pymjpeg.request_headers().items():
self.send_header(k, v)
# Multipart content
for filename in glob('img/*'):
# Part boundary string
self.end_headers()
self.wfile.write(pymjpeg.boundary)
self.end_headers()
# Part headers
for k, v in pymjpeg.image_headers(filename).items():
self.send_header(k, v)
self.end_headers()
# Part binary
for chunk in pymjpeg.image(filename):
self.wfile.write(chunk)
def log_message(self, format, *args):
return

httpd = HTTPServer(('', 8001), MyHandler)
httpd.serve_forever()

关于python - 在 python 中从 jpeg 图像创建一个 mjpeg 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21197638/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com