【问题标题】:Using FFMPEG on Google Cloud Platform在谷歌云平台上使用 FFMPEG
【发布时间】:2017-06-28 02:31:31
【问题描述】:

我将音频文件存储在 Google Cloud Storage 上(通过 Firebase 存储)。

我需要使用 FFMPEG 将音频文件从立体声(两个通道)转换为单声道(一个通道)。

如何在谷歌云平台上进行上述转换?

更新: 我怀疑一种可能性是使用 Google Compute Engine 创建虚拟机,安装 ffmpeg,然后以某种方式访问​​音频文件。

我不确定这是否是最好的方法,甚至可能。所以我还在调查。

【问题讨论】:

    标签: audio ffmpeg google-cloud-platform google-compute-engine


    【解决方案1】:

    如果您不使用柔性环境或 Kubernetes,请从 https://ffbinaries.com/downloads 下载 ffmpeg 二进制文件 (Linux-64),并将 ffmpeg 和 ffprobe 直接包含在您的应用中。对于使用标准环境的应用,这确实是唯一无需切换的方法。

    添加它们后,您需要在选项数组中指向它们:

    $options = array(
        'ffmpeg.binaries'  => '/workspace/ffmpeg-binaries/ffmpeg',
        'ffprobe.binaries' => '/workspace/ffmpeg-binaries/ffmpeg',
        'timeout'          => 3600,
        'ffmpeg.threads'   => 12,
    );
    

    要让它在本地工作,您应该使它们成为环境变量,以在每个设置中指向正确的路径。将export FFMPEG_BINARIES_PATH="/usr/local/bin" 之类的内容(或您在本地拥有的任何地方)添加到您的 .zshrc 或其他 rc 文件中,并将以下代码添加到您的 app.yaml 中:

    env_variables:
        FFMPEG_BINARIES_PATH: '/workspace/ffmpeg-binaries'
    

    然后将options数组改为:

    $options = array(
        'ffmpeg.binaries'  => getenv("FFMPEG_BINARIES_PATH") . '/ffmpeg',
        'ffprobe.binaries' => getenv("FFMPEG_BINARIES_PATH") . '/ffmprobe',
        'timeout'          => 3600,
        'ffmpeg.threads'   => 12,
    );
    

    【讨论】:

      【解决方案2】:

      如果您已经拥有可以与 Google Cloud Storage 通信的代码,您可以将该代码部署为在 Custom Runtime 上运行的 App Engine 应用程序。为确保您的应用程序可以使用 ffmpeg 二进制文件,您需要将其添加到应用程序的 Dockerfile:

      RUN apt-get install ffmpeg
      

      然后,只需让您的代码将来自 GCS 的音频文件保存在 /tmp 的某个位置,然后转至 /usr/bin/ffmpeg 进行转换,然后让您的代码对生成的输出文件执行其他操作(例如将其返回给客户端或将其保存回 Cloud Storage)。

      【讨论】:

      • 非常感谢。我也有这个问题。我期待着尝试你的答案。
      • RUN apt-get update && apt-get install -y ffmpeg 为我工作。
      猜你喜欢
      • 2020-06-02
      • 2020-07-26
      • 2019-02-27
      • 2020-08-06
      • 1970-01-01
      • 1970-01-01
      • 2018-06-19
      • 2014-11-21
      • 1970-01-01
      相关资源
      最近更新 更多