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 媒体服务执行转码。
可能的解决方案是:
- 使用 Azure 媒体服务/Azure Blob 功能。
FetchAttributesAsync
不包含编解码器信息..Hanven没有找到任何其他适用的方法。
- 我只关心
if == H.264 || if != H.265
。使用 .Mov
Container 的知识并使用 CloudBlockBlob.DownloadRangeToStream()
下载
或在上传时拦截 iFormFile
流并读取特定字节(FOURCCs?)以做出决定。
将整个视频保存在服务器内存中不是一种选择。
不胜感激。
如果目标是根据视频编解码器决定是否对源 MOV 进行编码,那么您可以执行以下操作:
用户上传MOV文件
上传完成后,Azure 存储上的事件网格主题会触发一个事件
一个 Azure Function 是事件 handler/subscriber 接收事件
然后该函数 (a) 确定这是一个新的视频上传,(b) 为视频创建一个 SAS URL,(c) 运行 ffprobe 以确定视频编解码器, (d) 如果H.265再提交一个编码Task
注意:如果您不想使用ffprobe,那么您可以在源视频上提交缩略图任务。这将是一项低成本的工作,输出资产将包含输入元数据 XML 文件,可以对其进行解析以确定编解码器。在我上面的评论中,我为这个 XML 文件的架构提供了一个 link。
希望对您有所帮助!
我们的 SPA 上传单元 phone 视频。较新的 iPhone 在 .Mov
容器中上传视频 H.265
在某些 chrome 无法本地播放的情况下。
我们正在使用 Azure 媒体服务执行转码。 可能的解决方案是:
- 使用 Azure 媒体服务/Azure Blob 功能。
FetchAttributesAsync
不包含编解码器信息..Hanven没有找到任何其他适用的方法。 - 我只关心
if == H.264 || if != H.265
。使用.Mov
Container 的知识并使用CloudBlockBlob.DownloadRangeToStream()
下载 或在上传时拦截iFormFile
流并读取特定字节(FOURCCs?)以做出决定。
将整个视频保存在服务器内存中不是一种选择。
不胜感激。
如果目标是根据视频编解码器决定是否对源 MOV 进行编码,那么您可以执行以下操作:
用户上传MOV文件
上传完成后,Azure 存储上的事件网格主题会触发一个事件
一个 Azure Function 是事件 handler/subscriber 接收事件
然后该函数 (a) 确定这是一个新的视频上传,(b) 为视频创建一个 SAS URL,(c) 运行 ffprobe 以确定视频编解码器, (d) 如果H.265再提交一个编码Task
注意:如果您不想使用ffprobe,那么您可以在源视频上提交缩略图任务。这将是一项低成本的工作,输出资产将包含输入元数据 XML 文件,可以对其进行解析以确定编解码器。在我上面的评论中,我为这个 XML 文件的架构提供了一个 link。
希望对您有所帮助!