java完成用ffmpeg 获得视頻时间

2021-03-26 01:04| 发布者: | 查看: |

最先必须引进ffmpeg.exe

启用

 int time = ConvertM3U8.getVideoTime(downloadPath);

方式:

 static String ffmpegpath= D:\\Program Files\\ffmpeg--4cfcfb3-win64-static\\bin\\ffmpeg.exe  // ffmpeg.exe的文件目录
 static String ffmpegpath= Global.getProfile()+ \\ffmpeg.exe 
 
public static int getVideoTime(String video_path) {
 List String &mands = new java.util.ArrayList String 
&mands.add(ffmpegpath);
&mands.add( -i 
&mands.add(video_path);
 try {
 ProcessBuilder builder = new ProcessBuilder();
&mands);
 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 =&pile(regexDuration);
 Matcher m = pattern.matcher(sb.toString());
 if (m.find()) {
 int time = getTimelen(m.group(1));
 System.out.println(video_path+ ,视頻时间: +time+ , 刚开始時间: +m.group(2)+ ,比特率: +m.group(3)+ kb/s 
 return time;
 }
 } catch (Exception e) {
 e.printStackTrace();
 }
 return 0;
private static int getTimelen(String timelen){
 int min=0;
 String strs[] = timelen.split( : 
 if (strs[0].compareTo( 0 )   0) {
 min+=Integer.valueOf(strs[0])*60*60;//秒
 }
 if(strs[1].compareTo( 0 ) 0){
 min+=Integer.valueOf(strs[1])*60;
 }
 if(strs[2].compareTo( 0 ) 0){
 min+=Math.round(Float.valueOf(strs[2]));
 }
 return min;
}


文中由网站站长原創或搜集,不意味着本网站观点,倘若转截,请标明出處:

<
>

 
QQ在线咨询
售前咨询热线
18720358503
售后服务热线
18720358503
返回顶部