提交 6db0af1a authored 作者: 李学军's avatar 李学军

add rtsp to jpg

上级 95ed0a58
import asyncio
import websockets
from websockets import exceptions as ws_exceptions
connected = set()
async def handle_websocket(websocket, path):
connected.add(websocket)
try:
await websocket.wait_closed()
finally:
connected.remove(websocket)
async def capture_and_send_frames():
ffmpeg_cmd = [
'ffmpeg',
'-rtsp_transport', 'tcp',
'-i', 'rtsp://127.0.0.1:8554/stream0',
'-c:v', 'mjpeg',
'-q:v', '2',
'-f', 'mjpeg',
'pipe:1'
]
process = await asyncio.create_subprocess_exec(
*ffmpeg_cmd,
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.DEVNULL
)
buffer = b''
try:
while True:
data = await process.stdout.read(4096)
if not data:
break
buffer += data
while True:
start = buffer.find(b'\xff\xd8')
if start == -1:
break
end = buffer.find(b'\xff\xd9', start)
if end == -1:
break
end += 2
frame = buffer[start:end]
buffer = buffer[end:]
# Broadcast to all connected clients
for ws in connected.copy():
try:
await ws.send(frame)
except ws_exceptions.ConnectionClosed:
connected.discard(ws)
finally:
process.terminate()
await process.wait()
async def main():
async with websockets.serve(handle_websocket, '0.0.0.0', 8765):
await capture_and_send_frames()
if __name__ == '__main__':
try:
asyncio.run(main())
except KeyboardInterrupt:
print("Server stopped.")
\ No newline at end of file
import datetime import datetime
import json import json
import subprocess
from flask import Flask, request, jsonify, make_response from flask import Flask, request, jsonify, make_response
from flask_cors import CORS from flask_cors import CORS
import os import os
...@@ -8,9 +9,11 @@ import redis ...@@ -8,9 +9,11 @@ import redis
from flask_socketio import SocketIO, emit from flask_socketio import SocketIO, emit
import couchdb import couchdb
# 步骤 1:创建 Server 对象 # 步骤 1:创建 Server 对象
server = couchdb.Server('http://admin:M36j44l*.*@117.72.90.129:5984/') # 替换为实际 IP/域名‌ server = couchdb.Server('http://admin:M36j44l*.*@117.72.90.129:5984/') # 替换为实际 IP/域名‌
# 步骤 2:添加用户名密码验证 # 步骤 2:添加用户名密码验证
# server.resource.http.add_credentials('admin', 'M36j44l*.*') # server.resource.http.add_credentials('admin', 'M36j44l*.*')
...@@ -47,6 +50,7 @@ socketio = SocketIO(app, cors_allowed_origins="*") # 允许跨域 ...@@ -47,6 +50,7 @@ socketio = SocketIO(app, cors_allowed_origins="*") # 允许跨域
# model = load_model() # 这里可以加载你的 PyTorch 模型 # model = load_model() # 这里可以加载你的 PyTorch 模型
@app.route('/') @app.route('/')
def index(): def index():
return "Welcome to Flask API" return "Welcome to Flask API"
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论