Lambda中写入WebM数据至/tmp文件后上传S3失效问题排查
问题分析与解决:Lambda写入WebM文件后无法正常播放
问题根源
你写入文件的逻辑存在错误:使用print()写入二进制WebM数据时,Python会将字节对象转换成字符串表示形式(例如把原始字节b'\x1aE\xdf\xa3'转为字符串"b'\\x1aE\\xdf\\xa3'"),而非直接写入原始二进制内容。这种转换会破坏WebM文件的结构,导致上传到S3后无法正常播放。
修正代码
将文件写入部分替换为以下代码:
# 以二进制写入模式打开文件,直接写入原始字节数据 with open("/tmp/audio.webm", "wb") as audio_file: audio_file.write(form_data['audio'][0])
关键说明
- 打开文件时必须使用
wb模式(二进制写入模式),不能用文本模式(a/w是文本模式,会默认处理编码,破坏二进制数据) - 直接调用
write()方法写入原始字节对象,避免使用print()——print()会自动添加换行符、并对字节对象做字符串格式化,完全不适合处理二进制文件
修正后,写入/tmp/audio.webm的就是原始WebM二进制数据,上传到S3后可以正常播放,后续用ffmpeg合并视频也能正常工作。
内容的提问来源于stack exchange,提问作者ZPears
相关产品推荐
相关产品推荐

