update
This commit is contained in:
parent
ed39133704
commit
51a89836a7
|
@ -0,0 +1,28 @@
|
||||||
|
|
||||||
|
from fastapi import FastAPI
|
||||||
|
import asyncio
|
||||||
|
|
||||||
|
app = FastAPI()
|
||||||
|
user_sched = {}
|
||||||
|
|
||||||
|
async def my_async_task():
|
||||||
|
# 这里是异步任务的代码
|
||||||
|
# 倒计时3秒
|
||||||
|
await asyncio.sleep(10)
|
||||||
|
print("close")
|
||||||
|
|
||||||
|
async def task_start(username, device):
|
||||||
|
task = asyncio.create_task(my_async_task())
|
||||||
|
user_sched[username] = task
|
||||||
|
@app.get("/video/{username}/{device}")
|
||||||
|
async def startup(username, device):
|
||||||
|
if username not in user_sched:
|
||||||
|
await task_start(username, device)
|
||||||
|
else:
|
||||||
|
t = user_sched['1']
|
||||||
|
t.cancel()
|
||||||
|
await task_start()
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
import uvicorn
|
||||||
|
uvicorn.run(app, host="0.0.0.0", port=8004)
|
|
@ -1,3 +1,3 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
device_name=`cat /home/pi/device_name`
|
device_name=`cat /home/pi/device_name`
|
||||||
/usr/bin/ffmpeg -rtsp_transport tcp -re -i rtsp://admin:123456@192.168.0.123:554/mpeg4 -c copy -preset ultrafast -r 15 -s 1280x720 -flvflags no_duration_filesize -f rtsp -rtsp_transport tcp rtsp://47.108.186.87:554/live/$device_name
|
/usr/bin/ffmpeg -rtsp_transport tcp -re -i rtsp://admin:123456@192.168.0.123:554/mpeg4 -c copy -preset fast -r 20 -s 1280x720 -flvflags no_duration_filesize -f rtsp -rtsp_transport tcp rtsp://47.108.186.87:554/live/$device_name
|
|
@ -5,3 +5,4 @@ fastapi~=0.95.1
|
||||||
paho-mqtt~=1.6.1
|
paho-mqtt~=1.6.1
|
||||||
requests~=2.31.0
|
requests~=2.31.0
|
||||||
pyserial~=3.5
|
pyserial~=3.5
|
||||||
|
board~=1.0
|
37
test.py
37
test.py
|
@ -1,3 +1,4 @@
|
||||||
|
import asyncio
|
||||||
import json
|
import json
|
||||||
|
|
||||||
import uvicorn
|
import uvicorn
|
||||||
|
@ -34,7 +35,38 @@ class MQTTClient:
|
||||||
self.client.connect(self.broker, self.port)
|
self.client.connect(self.broker, self.port)
|
||||||
|
|
||||||
|
|
||||||
@app.post("/push_stream")
|
user_sched = {}
|
||||||
|
|
||||||
|
|
||||||
|
async def close(username, device):
|
||||||
|
# 倒计时600秒
|
||||||
|
await asyncio.sleep(30)
|
||||||
|
user_sched.pop(username)
|
||||||
|
print("结束推流")
|
||||||
|
close_stream(username, device)
|
||||||
|
|
||||||
|
|
||||||
|
async def task_start(username, device):
|
||||||
|
print("开始推流")
|
||||||
|
push_stream(username, device)
|
||||||
|
task = asyncio.create_task(close(username, device))
|
||||||
|
user_sched[username] = task
|
||||||
|
|
||||||
|
|
||||||
|
@app.get("/video/{username}/{device}")
|
||||||
|
async def startup(username, device):
|
||||||
|
try:
|
||||||
|
if username not in user_sched:
|
||||||
|
await task_start(username, device)
|
||||||
|
else:
|
||||||
|
t = user_sched[username]
|
||||||
|
# 取消重来
|
||||||
|
t.cancel()
|
||||||
|
await task_start()
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
def push_stream(username, device):
|
def push_stream(username, device):
|
||||||
MQTT = MQTTClient(broker, port, device, username, username)
|
MQTT = MQTTClient(broker, port, device, username, username)
|
||||||
try:
|
try:
|
||||||
|
@ -45,7 +77,6 @@ def push_stream(username, device):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@app.post("/close_stream")
|
|
||||||
def close_stream(username, device):
|
def close_stream(username, device):
|
||||||
try:
|
try:
|
||||||
MQTT = MQTTClient(broker, port, device, username, username)
|
MQTT = MQTTClient(broker, port, device, username, username)
|
||||||
|
@ -59,4 +90,4 @@ def close_stream(username, device):
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
broker = 'mqtt.lihaink.cn'
|
broker = 'mqtt.lihaink.cn'
|
||||||
port = 1883
|
port = 1883
|
||||||
uvicorn.run(app, host="127.0.0.1", port=8000)
|
uvicorn.run(app, host="127.0.0.1", port=8001)
|
||||||
|
|
Loading…
Reference in New Issue