from flask import request, jsonify from app.utils import make_response from app.transcode.core import convert_to_h264 from pathlib import Path def register_transcode_routes(app): """【转码模块入口】只注册路由""" # 初始化转码输出目录 transcode_output_dir = Path(app.config['OUTPUT_DIR'], "vid_h264") transcode_output_dir.mkdir(parents=True, exist_ok=True) @app.route('/api/convert', methods=['GET']) def convert(): # 获取参数 path = request.args.get('path', '') # 1. 路径为空时,返回错误响应 if not path: return jsonify(make_response(status="error", message="缺少 path")), 400 # 2. 路径不为空,转码视频文件 try: out = convert_to_h264(app.config['INPUT_DIR'], path, transcode_output_dir) return jsonify(make_response(message="转码完成", data={"path": out})) except FileNotFoundError as e: return jsonify(make_response(status="error", message=str(e))), 404 except Exception as e: return jsonify(make_response(status="error", message=f"转码失败:{str(e)}")), 500 @app.route('/api/getVidUrl', methods=['GET']) def getVidUrl(): path = Path(request.args.get('path', '')) if not path: return jsonify(make_response(status="error", message="缺少path")), 400 vid_path = Path(transcode_output_dir, f"{path.stem}_h264.mp4") if not vid_path.exists(): return jsonify(make_response(status="error", message="视频不存在")), 404 url = f"http://localhost:8086/{path.stem}_h264.mp4" return jsonify(make_response(data={"url": url}))