解决办法:
需要使用FFmpeg框架。它是一个多媒体转码、音视频流化传输的一个第三方开源框架,并且这个第三方库是基于C语言的。
下载地址:http://ffmpeg.org/download.html
原理:
1、通过java执行cmd命令ffmpeg.exe -i '视频url地址'。
2、获取结果,解析其中的Duration行,包含时长信息
代码如下:
//ffmpeg命令位置
String ffmpeg_path="D:/ffmpeg-20200504-5767a2e-win64-static/bin/ffmpeg.exe";
//视频url地址
String video_path="https://baidu.com/record/kk 2019-10-24 09-38-47.mp4";
//拼接系统命令
List<String> commands = new java.util.ArrayList<String>();
commands.add(ffmpeg_path);
commands.add("-i");
commands.add(video_path);
//执行系统命令
ProcessBuilder builder = new ProcessBuilder();
builder.command(commands);
final Process p = builder.start();
//从输入流中读取视频信息
BufferedReader br = new BufferedReader(new InputStreamReader(p.getErrorStream()));
StringBuffer sb = new StringBuffer();
String line = "";
while ((line = br.readLine()) != null) {
sb.append(line);
}
br.close();
//从视频信息中解析时长
String regexDuration = "Duration: (.*?), start: (.*?), bitrate: (\\d*) kb\\/s";
Pattern pattern = Pattern.compile(regexDuration);
Matcher m = pattern.matcher(sb.toString());
if (m.find()) {
System.out.println(video_path+",视频时长:"+m.group(1));
}