ASP.Net Core 2 中确定上传到 Azure Blob 的视频编码的有效方法

Efficient method to determine video encoding of upload to Azure Blob in ASP .Net Core 2

我们的 SPA 上传单元 phone 视频。较新的 iPhone 在 .Mov 容器中上传视频 H.265 在某些 chrome 无法本地播放的情况下。

我们正在使用 Azure 媒体服务执行转码。 可能的解决方案是:

  1. 使用 Azure 媒体服务/Azure Blob 功能。 FetchAttributesAsync不包含编解码器信息..Hanven没有找到任何其他适用的方法。
  2. 我只关心 if == H.264 || if != H.265。使用 .Mov Container 的知识并使用 CloudBlockBlob.DownloadRangeToStream() 下载 或在上传时拦截 iFormFile 流并读取特定字节(FOURCCs?)以做出决定。

将整个视频保存在服务器内存中不是一种选择。

不胜感激。

如果目标是根据视频编解码器决定是否对源 MOV 进行编码,那么您可以执行以下操作:

  1. 用户上传MOV文件

  2. 上传完成后,Azure 存储上的事件网格主题会触发一个事件

  3. 一个 Azure Function 是事件 handler/subscriber 接收事件

  4. 然后该函数 (a) 确定这是一个新的视频上传,(b) 为视频创建一个 SAS URL,(c) 运行 ffprobe 以确定视频编解码器, (d) 如果H.265再提交一个编码Task

注意:如果您不想使用ffprobe,那么您可以在源视频上提交缩略图任务。这将是一项低成本的工作,输出资产将包含输入元数据 XML 文件,可以对其进行解析以确定编解码器。在我上面的评论中,我为这个 XML 文件的架构提供了一个 link。

希望对您有所帮助!