在Azure功能中写入视频

问题描述 投票:0回答:1

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

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

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

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

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 ...,但不是在天蓝色的功能。

我怀疑opencv找不到我提供的openh264 dll。我是否需要做其他事情,而不仅仅是把它放进垃圾桶?

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

我错过了什么?

谢谢。

azure opencv azure-functions h.264 opencvsharp
1个回答
0
投票

我不太了解OpenCV,但我认为OpenCV不允许使用Kudu Sandbox。一种选择是在容纳在App ServiceAzure Container Instances中的Container中运行此部件。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.