Наш SPA загружает видео с мобильного телефона. Более новые iPhone загружают видео в контейнер .Mov с помощью H.265 при некоторых обстоятельствах, которые Chrome не воспроизводит изначально.
Мы используем службы мультимедиа Azure для выполнения транскодирования. Возможные решения:
- Используйте функции Azure Media Services/Azure Blob.
FetchAttributesAsync не содержит информации о кодеке. Ханвен не нашел другого применимого метода.
- Меня интересует только
if == H.264 || if != H.265. Используйте знание .Mov Container и загружайте с помощью CloudBlockBlob.DownloadRangeToStream() или перехватывайте iFormFile Stream на загрузите и прочитайте определенные байты (FOURCC?), чтобы принять решение.
Хранение всего видео в памяти сервера не вариант.
Любое направление приветствуется.
Ответ 1 · рейтинг 1 · Anil Murching
Если цель состоит в том, чтобы решить, следует ли кодировать исходный MOV на основе видеокодека, вы можете реализовать следующее:
Пользователь загружает файл MOV
После завершения загрузки тема сетки событий в службе хранилища Azure запускает событие.
Функция Azure - это обработчик событий/подписчик, получающий событие.
Затем эта функция (а) определяет, что это новая загрузка видео, (б) создает URL-адрес SAS для видео, (в) запускает ffprobe для определения видеокодека, (г) если H.265, затем отправляет задачу кодирования
Примечание: если вы не хотите использовать ffprobe, вы можете отправить задачу миниатюры на исходное видео. Это будет недорогая работа, а выходной ресурс будет содержать XML-файл входных метаданных, который можно проанализировать для определения кодека. В моем комментарии выше я предоставил ссылку на схему для этого XML-файла.
Надеюсь это поможет!