我正在构建一个应用程序,用户可以在其中上传关于自己的简短肖像视频,以便在社区内进行宣传。关键字很短。我想阻止用户上传1小时的史诗。
我已经尝试找出一种在客户端验证这一点的方法,但是我已经决定在服务器端执行所有可用的视频格式。 这就是我撞到隔壁的地方。
我通过引用直接将用户视频(通过预期的大文件)上传到我的blob存储中。此后,文件将被复制到与azure媒体服务帐户链接的另一个存储中。
在上传和复制到第二个存储之间,我想验证持续时间。从我试过的库( Accord , NReco , MediaToolkit )都以某种方式失败(不支持在azure网站上运行,不读取blob或类似问题。)
所以我此刻陷入了困境。有没有人有任何想法如何做到这一点,而不必先通过azure媒体服务进行编码?
答案 0 :(得分:1)
我只需上传到%TEMP%
(扩展为d:\local\temp
)。 App Service中的本地存储空间。然后,所有这些库应该对本地文件系统起作用,包括我个人最喜欢的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%
以解决过时/不完整的上传(即删除超过6小时的文件),以防万一由于不可预见的原因导致对文件系统的删除调用失败。