40 lines
1.7 KiB
Python
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})) |