gpt4 book ai didi

java - 如果是视频,有没有办法检查 MultipartFile 上传的长度?

转载 作者:太空宇宙 更新时间:2023-11-04 12:02:15 29 4
gpt4 key购买 nike

是否有一种优雅的方法来检查以 MultipartFile 上传的视频长度(以毫秒为单位)?

public long checkVideoLength(MultipartFile video) {
long length = 0;
if(video.getContentType().equals("video/mp4")) {
//Resolve the video's length if it's an mp4
}
return length;
}

我一直无法找到一个优雅的解决方案。

最佳答案

您需要一个可以读取文件并告诉您长度的库。例如,使用 Caprica 的 VLCJ ,它包装了 VLC,一旦您将 MediaPlayer 指向您的文件,您就可以向它询问 its length in seconds 。不过,我不确定如果没有界面这是否可行。

另一个选项是 Xuggler ,它包装了 FFMPEG。在那里,您可以编写以下内容来打开文件并询问其持续时间:

IMediaReader reader = ToolFactory.makeReader(filename);
IContainer container = reader.getContainer();
if (container.queryStreamMetaData() >= 0) {
long duration = container.getDuration(); // <-- got it
}

请注意,.mp4 文件( mp4 is a container ,而不是编码)中存在很多变化 - 因此请注意格式错误或不受支持的变体。

VLCJ 和 Xuggler 都是 GPLv3;您可能需要将您的程序作为插件与它们隔离,除非您的代码也将是 GPL,具体取决于您如何解释 java 链接。

另一种选择是调用为您提供号码的系统脚本。这无需 Java 集成,但会强制您保持脚本更新并使其系统依赖项可用。对于 ubuntu linux,这些可以工作:

ffprobe file.mp4 -show_format_entry duration

avprobe file.mp4 -show_format_entry duration

$ mediainfo --Inform="Video;%Duration%"  [inputfile]

所有这些都在 this answer 中找到

关于java - 如果是视频,有没有办法检查 MultipartFile 上传的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40789960/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com