You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Lambda返回视频响应时出现Runtime.MarshalError求助

问题解决:AWS Lambda返回二进制视频时的序列化错误

错误原因

Lambda响应序列化有严格规则:

  • 当isBase64Encoded=False时,body必须是UTF-8编码的字符串,你直接传入视频二进制字节,Lambda尝试将其解码为UTF-8时失败,引发解码错误。
  • 当isBase64Encoded=True时,body需要是Base64编码的字符串而非原始二进制字节,你之前仅切换标志位但未处理body格式,因此错误依然存在。

修复方案

将视频二进制内容编码为Base64字符串,同时正确设置isBase64Encoded=True。修改后的代码如下:

import requests
import base64

def lambda_handler(event, context):
    video_data = requests.get("http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4")
    video_content = video_data.content
    # 将二进制内容编码为Base64字符串
    base64_video = base64.b64encode(video_content).decode('utf-8')
    
    response = {
        "statusCode": 200,
        "headers": {
            "Content-Type": "video/mp4",
            "Content-Length": str(len(base64_video))
        },
        "body": base64_video,
        "isBase64Encoded": True
    }
    return response

额外提示

如果视频文件较大,requests.get().content会将整个视频加载到Lambda内存中,可能触发内存超限或超时。这种场景下建议使用流式响应(需配置Lambda运行时支持流式输出),避免一次性加载大文件到内存。

内容的提问来源于stack exchange,提问作者melk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 08:15:34