Написать видео в Azure Function - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть видео, которые я хочу обработать в функции Azure (триггер очереди служебной шины).Когда приходит новое сообщение и вызывается функция, я делаю следующее:

  1. Загрузка видео из хранилища BLOB-объектов в каталог функций
  2. Обработка видео (циклический переход по кадрам и добавление некоторой информации о них)
  3. Запись обработанных кадров в файл output.mp4 (с использованием OpenWVSharp's 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.Нужно ли делать что-то еще, а не просто положить это в мусорное ведро?

Могу ли я каким-то образом вывести выходные данные из OpenCV в журналы функций?

Что мне не хватает?

Спасибо.

1 Ответ

0 голосов
/ 28 февраля 2019

Я не очень хорошо знаю OpenCV, но я думаю, что OpenCV не разрешен в песочнице Куду.Один из вариантов - запустить эту часть в контейнере, размещенном в Службе приложений или Экземпляры контейнера Azure .

Все веб-приложения Azure (а также мобильные приложения / службы, веб-задания и функции ) работают в безопасной среде, называемой песочницей.Каждое приложение запускается в своей собственной изолированной программной среде, изолируя его выполнение от других экземпляров на том же компьютере, а также обеспечивая дополнительную степень безопасности и конфиденциальности, которые в противном случае были бы недоступны.Механизм песочницы призван обеспечить минимальный гарантированный уровень обслуживания каждого приложения, работающего на компьютере;кроме того, ограничения времени выполнения, установленные песочницей, защищают приложения от неблагоприятного воздействия других ресурсоемких приложений, которые могут работать на той же машине.

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

...