asdas1241 commited on
Commit
44a4667
·
verified ·
1 Parent(s): f2efc7f

Upload 4 files

Browse files
Files changed (5) hide show
  1. .gitattributes +2 -0
  2. app.py +84 -0
  3. ffmpeg +3 -0
  4. output.mp4 +3 -0
  5. requirements.txt +6 -0
.gitattributes CHANGED
@@ -33,3 +33,5 @@ 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
+ ffmpeg filter=lfs diff=lfs merge=lfs -text
37
+ output.mp4 filter=lfs diff=lfs merge=lfs -text
app.py ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 = "stream.m3u8"
13
+ hls_segment_prefix = "stream"
14
+
15
+ # Comando FFmpeg para transmitir video en HLS (en loop continuo)
16
+ ffmpeg_command = [
17
+ './ffmpeg',
18
+ '-re',
19
+ '-stream_loop', '-1', # Repetir el video en loop
20
+ '-i', video_file,
21
+ '-vf', 'fps=24',
22
+ '-c:v', 'libx264',
23
+ '-c:a', 'libfdk_aac',
24
+ '-profile:a', 'aac_he_v2',
25
+ '-crf', '28',
26
+ '-b:a', '32k',
27
+ '-preset', 'fast',
28
+ '-bsf:a', 'aac_adtstoasc',
29
+ '-f', 'hls',
30
+ '-hls_time', '15', # Duración de cada segmento en segundos
31
+ '-hls_list_size', '15', # Número de segmentos en la lista de reproducción
32
+ '-hls_flags', 'append_list+omit_endlist', # Añadir a la lista sin eliminar los antiguos
33
+ '-hls_segment_filename', f'{hls_segment_prefix}%03d.ts', # Nombre de archivo de los segmentos
34
+ hls_output
35
+ ]
36
+
37
+ def make_ffmpeg_executable():
38
+ try:
39
+ subprocess.run(["chmod", "+x", "./ffmpeg"], check=True)
40
+ except subprocess.CalledProcessError as e:
41
+ print(f"Error al cambiar permisos de FFmpeg: {e}")
42
+
43
+ def stream_video():
44
+ try:
45
+ process = subprocess.Popen(ffmpeg_command)
46
+ process.wait()
47
+ except Exception as e:
48
+ print(f"Error al ejecutar FFmpeg: {e}")
49
+
50
+ @app.on_event("startup")
51
+ async def startup_event():
52
+ make_ffmpeg_executable() # Asegurarse de que FFmpeg sea ejecutable
53
+ # Espera activa para verificar que el archivo M3U8 esté generado
54
+ while not os.path.exists(hls_output):
55
+ print("Esperando a que se genere el archivo M3U8...")
56
+ time.sleep(1)
57
+ print("Archivo M3U8 generado. Servidor listo para recibir solicitudes.")
58
+
59
+ @app.get("/")
60
+ async def read_root():
61
+ return {"message": "Training IA"}
62
+
63
+ @app.get("/stream.m3u8")
64
+ def get_m3u8():
65
+ with open(hls_output, "rb") as f:
66
+ m3u8_content = f.read()
67
+ return Response(content=m3u8_content, media_type="application/vnd.apple.mpegurl")
68
+
69
+ @app.get("/stream{segment}.ts")
70
+ def get_segment(segment: int):
71
+ segment_file = f"{hls_segment_prefix}{segment:03d}.ts"
72
+ if os.path.exists(segment_file):
73
+ with open(segment_file, "rb") as f:
74
+ segment_content = f.read()
75
+ return Response(content=segment_content, media_type="video/mp2t")
76
+ else:
77
+ return Response(status_code=404, content="Segment not found")
78
+
79
+ if __name__ == "__main__":
80
+ # Asegurarse de que FFmpeg sea ejecutable antes de iniciar el proceso
81
+ make_ffmpeg_executable()
82
+ video_process = Process(target=stream_video)
83
+ video_process.start()
84
+ uvicorn.run(app, host="0.0.0.0", port=7860)
ffmpeg ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1d6d9c33e7a0ccb8a4774efbbe690697ecf3c8134abc1b34d6072499d478d7c8
3
+ size 67504768
output.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:404a909b79f22d2d855fe199a22724754620d93ec89d584053afb4c445162aa6
3
+ size 6960848679
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