yolov8m / app.py
Spot2024's picture
Upload 2 files
d7cd07a verified
from flask import Flask, request, send_file, jsonify
import os
import uuid
from process_video import process_video # 載入 process_video 函式
app = Flask(__name__)
@app.route('/')
def index():
return '''
<!DOCTYPE html>
<html>
<head>
<title>Video Crop MVP</title>
</head>
<body>
<h1>Upload horizontal sports video</h1>
<form action="/process_video" method="post" enctype="multipart/form-data">
<input type="file" name="video" accept="video/*"><br><br>
<input type="submit" value="Upload and Process">
</form>
</body>
</html>
'''
@app.route('/process_video', methods=['POST'])
def handle_video():
if 'video' not in request.files:
return "No video file uploaded", 400
video_file = request.files['video']
if video_file.filename == '':
return "No selected file", 400
# 保存上傳的影片
input_path = f"input_{uuid.uuid4().hex}.mp4"
video_file.save(input_path)
# 設定輸出目錄
output_dir = f"output_{uuid.uuid4().hex}"
os.makedirs(output_dir, exist_ok=True)
# 執行影片處理
try:
process_video(input_path, output_dir)
except Exception as e:
return f"Error processing video: {str(e)}", 500
finally:
# 刪除原始上傳檔案
os.remove(input_path)
# 返回處理結果
keyframes_json_path = os.path.join(output_dir, "keyframes.json")
if os.path.exists(keyframes_json_path):
with open(keyframes_json_path) as f:
keyframes_data = json.load(f)
return jsonify(keyframes_data)
else:
return "Keyframes not generated.", 500
if __name__ == '__main__':
app.run(debug=True)