【问题标题】:Write video in Azure Function在 Azure Function 中编写视频
【发布时间】:2019-02-28 13:03:05
【问题描述】:

我有想要在 Azure 功能(服务总线队列触发器)中处理的视频。 当新消息到达并调用函数时,我执行以下操作:

  1. 将视频从 blob 存储下载到函数目录
  2. 处理视频(循环帧并在其上添加一些信息)
  3. 将处理后的帧写入 output.mp4(使用 OpenCVSharp 的 VideoWriter)
  4. 将处理后的视频上传到 Blob 存储中

但是在第三步我遇到了一个问题: 我可以打开视频、阅读框架和绘制信息。但是当我尝试编写输出时,它什么也不做。没有错误,没有文件...

这是我初始化视频编写器的方法:

var frameSize = new Size(frameWidth, frameHeight);
using (var writer = new VideoWriter(output, FourCC.H264, fps, frameSize))
{
   ...
}

我知道 OpenCV 默认不支持 h264,所以我将 openh264-1.8.0-win64.dll 添加到我的 bin 目录中。

一切正常,在本地运行时生成有效的 mp4...,但不是在 azure 函数中。

我怀疑opencv 找不到我提供的openh264 dll。我是否需要做其他事情,而不仅仅是将其放入 bin 中?

我能以某种方式将 OpenCV 的输出转储到函数日志中吗?

我错过了什么?

谢谢。

【问题讨论】:

    标签: azure opencv azure-functions h.264 opencvsharp


    【解决方案1】:

    我不太了解 OpenCV,但我想 OpenCV 不允许使用 Kudu 沙箱。一种选择是在托管于App ServiceAzure Container Instances 的容器中运行此部分。

    所有 Azure Web 应用程序(以及移动应用程序/服务、WebJobs 和 Functions)都在称为沙盒的安全环境中运行。每个应用程序都在自己的沙箱中运行,将其执行与同一台机器上的其他实例隔离开来,并提供额外的安全性和隐私性,否则将无法使用。沙盒机制旨在确保机器上运行的每个应用程序都具有最低保证的服务级别;此外,沙盒实施的运行时限制可保护应用免受可能在同一台机器上运行的其他资源密集型应用的不利影响。

    https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox

    【讨论】:

    • 我明白了。因此,在 Azure 中使用 OpenCV 的唯一方法是在容器中运行它。谢谢。
    猜你喜欢
    • 2019-01-02
    • 2021-05-19
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 2017-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多