From 2ceb5772b7afa264f8ba9bb23caf14a27dc3ba12 Mon Sep 17 00:00:00 2001 From: zchengrong <124802516+zchengrong@users.noreply.github.com> Date: Mon, 7 Apr 2025 17:07:32 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=88=E6=96=B0=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=89:=20=20pose=20transform=20=E9=83=A8=E7=BD=B2=20fix?= =?UTF-8?q?=EF=BC=88=E4=BF=AE=E5=A4=8Dbug=EF=BC=89:=20docs=EF=BC=88?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E5=8F=98=E6=9B=B4=EF=BC=89:=20refactor?= =?UTF-8?q?=EF=BC=88=E9=87=8D=E6=9E=84=EF=BC=89:=20test(=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=B5=8B=E8=AF=95):?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../utils/pose_transform_upload.py | 56 ++++++++++++++----- 1 file changed, 41 insertions(+), 15 deletions(-) diff --git a/app/service/generate_image/utils/pose_transform_upload.py b/app/service/generate_image/utils/pose_transform_upload.py index 69708f6..a17dc48 100644 --- a/app/service/generate_image/utils/pose_transform_upload.py +++ b/app/service/generate_image/utils/pose_transform_upload.py @@ -10,6 +10,12 @@ from minio import Minio from app.core.config import * from app.service.utils.new_oss_client import oss_upload_image + +# minio 配置 +MINIO_URL = "www.minio.aida.com.hk:12024" +MINIO_ACCESS = 'vXKFLSJkYeEq2DrSZvkB' +MINIO_SECRET = 'uKTZT3x7C43WvPN9QTc99DiRkwddWZrG9Uh3JVlR' +MINIO_SECURE = True minio_client = Minio(MINIO_URL, access_key=MINIO_ACCESS, secret_key=MINIO_SECRET, secure=MINIO_SECURE) @@ -44,24 +50,44 @@ def upload_gif(gif_buffer, user_id, category, file_name): def upload_video(frames, user_id, category, file_name): try: - # 生成内存中的视频字节流 - video_buffer = io.BytesIO() - with imageio.get_writer(video_buffer, format="mp4", fps=24) as writer: - for img in frames: - writer.append_data(img) - writer.close() - video_bytes = video_buffer.getvalue() - object_name = f'{user_id}/{category}/{file_name}' - # 上传视频流到MinIO - minio_client.put_object( - bucket_name="aida-users", - object_name=object_name, - data=io.BytesIO(video_bytes), - length=len(video_bytes), - content_type="video/mp4" + # 创建视频写入器 + fps = 24 # 帧率 + video_path = "output.mp4" + fourcc = cv2.VideoWriter_fourcc(*'mp4v') + video_writer = cv2.VideoWriter(video_path, fourcc, fps, (768, 512)) + + # 逐帧写入 + for frame in frames: + video_writer.write(cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)) # OpenCV需BGR格式 + video_writer.release() + + minio_client.fput_object( + "aida-users", + object_name, + video_path, + content_type="video/mp4" # 指定MIME类型确保可在线播放[9](@ref) ) return f"aida-users/{object_name}" + + # # 生成内存中的视频字节流 + # video_buffer = io.BytesIO() + # with imageio.get_writer(video_buffer, format="mp4", fps=24) as writer: + # for img in frames: + # writer.append_data(img) + # writer.close() + # video_bytes = video_buffer.getvalue() + # + # object_name = f'{user_id}/{category}/{file_name}' + # # 上传视频流到MinIO + # minio_client.put_object( + # bucket_name="aida-users", + # object_name=object_name, + # data=io.BytesIO(video_bytes), + # length=len(video_bytes), + # content_type="video/mp4" + # ) + # return f"aida-users/{object_name}" except Exception as e: logging.warning(f"upload_video runtime exception : {e}")