Echo video
Browse files
app.py
CHANGED
@@ -32,6 +32,43 @@ async def echo_image(image: UploadFile = File(...)):
|
|
32 |
contents = await image.read()
|
33 |
return StreamingResponse(BytesIO(contents), media_type=image.content_type)
|
34 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
@app.post("/motion-image/")
|
36 |
async def motion_image(image: UploadFile = File(...), background_tasks: BackgroundTasks = BackgroundTasks()):
|
37 |
"""
|
@@ -66,7 +103,9 @@ async def motion_image(image: UploadFile = File(...), background_tasks: Backgrou
|
|
66 |
import mimetypes
|
67 |
mimetypes.add_type("video/mp4", ".mp4") # Asegúrate de añadir tipos si esperas video
|
68 |
mime_type, _ = mimetypes.guess_type(path_archivo)
|
|
|
69 |
if not mime_type:
|
|
|
70 |
mime_type = "application/octet-stream" # Tipo genérico si no se puede adivinar
|
71 |
|
72 |
# 4.5 Programar la eliminación de AMBOS archivos después de que la respuesta sea enviada
|
|
|
32 |
contents = await image.read()
|
33 |
return StreamingResponse(BytesIO(contents), media_type=image.content_type)
|
34 |
|
35 |
+
@app.post("/echo-video/",
|
36 |
+
tags=["Monitoreo Server"],
|
37 |
+
description="Test endpoint para prueba de envío de videos. Recibe un video y lo devuelve tal cual.",
|
38 |
+
summary="Mirror test para envío de videos"
|
39 |
+
)
|
40 |
+
async def echo_video(video: UploadFile = File(...)):
|
41 |
+
"""
|
42 |
+
Recibe un archivo de video y lo devuelve sin modificaciones.
|
43 |
+
Útil para probar la conectividad y el manejo de archivos de video en la API.
|
44 |
+
"""
|
45 |
+
# Validar que el archivo subido es un video
|
46 |
+
if not video.content_type.startswith("video/"):
|
47 |
+
raise HTTPException(
|
48 |
+
status_code=status.HTTP_400_BAD_REQUEST,
|
49 |
+
detail="El archivo no es un video. Por favor, suba un archivo de video."
|
50 |
+
)
|
51 |
+
|
52 |
+
try:
|
53 |
+
# Lee el contenido binario del video
|
54 |
+
contents = await video.read()
|
55 |
+
|
56 |
+
# Envuelve los bytes en un buffer en memoria
|
57 |
+
buffer = BytesIO(contents)
|
58 |
+
buffer.seek(0) # Asegúrate de que el puntero esté al inicio para la lectura
|
59 |
+
|
60 |
+
# Devuelve el video utilizando StreamingResponse con el tipo MIME correcto
|
61 |
+
return StreamingResponse(buffer, media_type=video.content_type)
|
62 |
+
|
63 |
+
except Exception as e:
|
64 |
+
# Captura cualquier error inesperado durante la lectura o la respuesta
|
65 |
+
print(f"Error inesperado en /echo-video/: {e}")
|
66 |
+
raise HTTPException(
|
67 |
+
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
68 |
+
detail="Ha ocurrido un error inesperado al procesar el video."
|
69 |
+
)
|
70 |
+
|
71 |
+
|
72 |
@app.post("/motion-image/")
|
73 |
async def motion_image(image: UploadFile = File(...), background_tasks: BackgroundTasks = BackgroundTasks()):
|
74 |
"""
|
|
|
103 |
import mimetypes
|
104 |
mimetypes.add_type("video/mp4", ".mp4") # Asegúrate de añadir tipos si esperas video
|
105 |
mime_type, _ = mimetypes.guess_type(path_archivo)
|
106 |
+
print("Myme type es: ", mime_type)
|
107 |
if not mime_type:
|
108 |
+
print("Entró a not mime_type")
|
109 |
mime_type = "application/octet-stream" # Tipo genérico si no se puede adivinar
|
110 |
|
111 |
# 4.5 Programar la eliminación de AMBOS archivos después de que la respuesta sea enviada
|