asdas1241 commited on
Commit
e686c81
verified
1 Parent(s): 67c4d78

Upload 3 files

Browse files
Files changed (4) hide show
  1. .gitattributes +1 -0
  2. app.py +72 -0
  3. iarec.mp4 +3 -0
  4. requirements.txt +6 -0
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ iarec.mp4 filter=lfs diff=lfs merge=lfs -text
app.py ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import time
3
+ import subprocess
4
+ from multiprocessing import Process
5
+ import uvicorn
6
+ from fastapi import FastAPI, Response
7
+
8
+ app = FastAPI()
9
+
10
+ # Archivo de video y rutas de salida
11
+ video_file = "iarec.mp4"
12
+ hls_output = "ia.m3u8"
13
+ hls_segment_prefix = "stream"
14
+
15
+ # Comando FFmpeg para transmitir video en HLS
16
+ ffmpeg_command = [
17
+ 'ffmpeg',
18
+ '-re',
19
+ '-stream_loop', '-1', # Mover aqu铆
20
+ '-i', video_file,
21
+ '-c', 'copy',
22
+ '-preset', 'ultrafast',
23
+ '-f', 'hls',
24
+ '-hls_time', '15',
25
+ '-hls_list_size', '0',
26
+ '-hls_flags', 'delete_segments',
27
+ '-hls_segment_filename', f'{hls_segment_prefix}%d.ts',
28
+ hls_output
29
+ ]
30
+
31
+ def stream_video():
32
+ # Ejecuta el comando FFmpeg para iniciar la transmisi贸n
33
+ process = subprocess.Popen(ffmpeg_command)
34
+ process.wait()
35
+
36
+ def start_video_streaming():
37
+ video_process = Process(target=stream_video)
38
+ video_process.start()
39
+
40
+ @app.on_event("startup")
41
+ async def startup_event():
42
+ # Espera activa para verificar que el archivo M3U8 est茅 generado
43
+ while not os.path.exists(hls_output):
44
+ print("Esperando a que se genere el archivo M3U8...")
45
+ time.sleep(1)
46
+ print("Archivo M3U8 generado. Servidor listo para recibir solicitudes.")
47
+
48
+ @app.get("/")
49
+ async def read_root():
50
+ return {"message": "Creating frames with IA"}
51
+
52
+ @app.get("/ia.m3u8")
53
+ def get_m3u8():
54
+ # Devuelve el archivo M3U8 generado
55
+ with open(hls_output, "rb") as f:
56
+ m3u8_content = f.read()
57
+ return Response(content=m3u8_content, media_type="application/vnd.apple.mpegurl")
58
+
59
+ @app.get("/ia{segment}.ts")
60
+ def get_segment(segment: int):
61
+ # Devuelve los segmentos TS generados
62
+ segment_file = f"{hls_segment_prefix}{segment}.ts"
63
+ if os.path.exists(segment_file):
64
+ with open(segment_file, "rb") as f:
65
+ segment_content = f.read()
66
+ return Response(content=segment_content, media_type="video/mp2t")
67
+ else:
68
+ return Response(status_code=404, content="Segment not found")
69
+
70
+ if __name__ == "__main__":
71
+ start_video_streaming()
72
+ uvicorn.run(app, host="0.0.0.0", port=7860)
iarec.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:66969c3fc1d467d1de0f9f115f6d8abe24d3ff6f004242c930fb4418b57c59a3
3
+ size 1513846887
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ fastapi==0.79.0
2
+ uvicorn==0.18.3
3
+ requests==2.28.1
4
+ ffmpeg-python==0.2.0
5
+ py7zr
6
+ jdk4py