提问人:kanils_ 提问时间:11/7/2023 更新时间:11/9/2023 访问量:75
如何确定和验证视频的分辨率?
How to determine and validate the resolution of the video?
问:
根据请求从 multipart/form 接收视频文件作为 IFromFile。
public class UploadMediaRequest
{
[Required]
public IFormFile Media { get; set; }
}
如何验证此视频的分辨率?例如,视频的分辨率应为 800 像素 x 468 像素,如果收到 1920 像素 x 1080 像素,则返回错误。
使用:.NET 7 ASP.NET Core 7
答:
2赞
Qing Guo
11/9/2023
#1
我们可以对输入的 change 事件使用事件侦听器。当用户选择文件时,事件侦听器回调会抓取该文件(使用 event.target.files[0]),创建新的 video 元素,并将 video 元素的 src 设置为包含表示文件对象的 URL 的 DOMString。
当元数据加载完毕时,将触发该事件 - 所有属性现在都包含我们需要的信息。在此事件的回调中,我们将检索之前创建的 video 元素的 videoHeight 和 videoWidth。这些值给出了视频文件的分辨率。onloadedmetadata
演示如下:
@model UploadMediaRequest
<form asp-action="CheckPost" enctype="multipart/form-data">
<input asp-for="Media" id="video-upload" type="file" />
<input type="submit" value="Create" />
</form>
<script>
const fileUpload = document.getElementById("video-upload");
fileUpload.addEventListener("change", event => {
const resultEl = document.getElementById("meta");
const file = event.target.files[0];
const videoEl = document.createElement("video");
videoEl.src = window.URL.createObjectURL(file);
// When the video metadata has loaded, check
// the video width/height
videoEl.onloadedmetadata = event => {
window.URL.revokeObjectURL(videoEl.src);
const { name, type } = file;
const { videoWidth, videoHeight } = videoEl;
var resolution = `${videoWidth}px x ${videoHeight}px`;
if (resolution != "800x x 468px") {
alert("Error! The resolution of the video should be 800px x 468px ");
$("#video-upload").val('');
}
}
})
评论
0赞
kanils_
11/9/2023
好吧,这是一个很酷的解决方案。这也应该在前端进行。但是,问题更多地与后端有关。
评论
ffprobe.exe