SpeechRecognition/app/transcode/routes.py

40 lines
1.7 KiB
Python

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}))