验证已上传到 Azure Blob 中的视频的持续时间

Verify duration of video which has been uploaded into azure blob

我正在构建一个应用程序,用户可以在其中上传一段关于自己的简短肖像视频,以便在社区内进行宣传。关键字很短。我想阻止用户上传 1 小时 epics。

我已经尝试找出一种在客户端验证这一点的方法,但是对于所有可用的视频格式,我决定在服务器端进行验证。 这是我撞到下一堵墙的地方。

我通过引用直接将用户视频分块上传(因为预计文件很大)到我的 blob 存储中。此后,文件将被复制到另一个与 Azure 媒体服务帐户链接的存储中。

In-between上传和复制到第二个存储是我要验证持续时间的地方。从我尝试过的库(AccordNRecoMediaToolkit)都以一种方式失败或其他(不支持 azure 网站中的 运行,不从 blob 或类似问题中读取)。

所以我现在有点卡住了。有没有人知道如何做到这一点而不必先通过 Azure 媒体服务进行编码?

我只会上传到 %TEMP%(扩展到 d:\local\temp)。那是应用服务中的本地存储。然后,所有这些库都应该针对本地文件系统工作,包括我个人最喜欢的 MediaInfo

标准层似乎有足够的空间,Kudu 报告如下:

d:\local usage: 230,397 MB total; 188,630 MB free

所以,

upload file
    |
    |                         too long?
check length with video lib ------------- notify user, cleanup local storage
    |
    | all good?
    | 
async upload to blob storage (Media Services)
    |
async cleanup local storage

使用每晚 WebJob 清理您的 %TEMP% 以解决 stale/incomplete 上传(即删除超过 6 小时的文件),以防您对文件系统的删除调用不时因到期而失败由于不可预见的原因。