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

在Firebase中用Python实现视频加音频的异常问题排查

问题:Cloud Function视频音频合并输出0字节文件,模拟器与部署行为不一致

原本以为操作简单,但Firebase视频编辑存在**模拟器可用但部署后失效(或反之)**的问题。我尝试用Cloud Function实现给视频添加音频的功能,目前输出文件存在但大小为0字节。

测试函数逻辑

  • 本地testfiles文件夹存放video.mp4和audio.mp3测试文件
  • 将测试文件上传至输入存储桶testbucketinput
  • 创建空文件trigger.txt并上传至触发器存储桶testbuckettrigger,触发合并函数
  • 合并后的视频输出至testbucketoutput存储桶

遇到的工具问题

  • ffmpeg无法稳定工作
  • moviepy既不稳定,处理速度还极慢

测试代码

def addTestBuckets2(req: https_fn.Request) -> https_fn.Response:

    # 创建存储桶实例
    testBucketInput = storage.bucket("testbucketinput")
    testBucketOutput = storage.bucket("testbucketoutput")
    testBucketTrigger = storage.bucket("testbuckettrigger")

    # 上传测试文件到输入存储桶
    testBucketInput.blob("audio.mp3").upload_from_filename(
        "D:/backendfunctions/functions/testfiles/audio.mp3")
    testBucketInput.blob("video.mp4").upload_from_filename(
        "D:/backendfunctions/functions/testfiles/video.mp4")

    # 创建空触发文件并上传到触发器存储桶
    open("trigger.txt", "w").close()
    testBucketTrigger.blob("trigger.txt").upload_from_filename(
        "trigger.txt")

    # 循环尝试下载输出文件
    keepTrying = 0
    while keepTrying < 100:
        try:
            testBucketOutput.blob("output.mp4").download_to_filename(
                "output.mp4")
            break
        except:
            sleep(.1)
            keepTrying += 1

    # os.remove("output.mp4")

    return https_fn.Response("Bucket tested")


@storage_fn.on_object_finalized(bucket="testbuckettrigger", region=region)
def editvidtestfunction(event: storage_fn.CloudEvent[storage_fn.StorageObjectData | None],) -> None:
    """ 测试视频编辑功能限制 """

    # 获取触发文件路径
    file_path = event.data.name

    # 获取文件名
    file_name = file_path.split("/")[-1]
    # just_path = file_path.split("/")[:-1][0]
    # just_name = '.'.join(file_name.split('.')[:-1])

    # 从输入存储桶下载视频和音频到本地
    storage.bucket("testbucketinput").blob(
        "video.mp4").download_to_filename("video.mp4")
    storage.bucket("testbucketinput").blob(
        "audio.mp3").download_to_filename("audio.mp3")

    # 使用ffmpeg合并视频与音频
    cmd = f"ffmpeg -i video.mp4 -i audio.mp3 -c copy -map 0:v:0 -map 1:a:0 output.mp4"
    subprocess.run(cmd, shell=True)

    # 上传合并后的视频到输出存储桶
    storage.bucket("testbucketoutput").blob(
        "output.mp4").upload_from_filename("output.mp4")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 13:52:11