·您当前的位置:首页 > 技术教程 > FFmpeg技术 >

[ffmpeg]ffmpeg视频格式转化及flv格式截图

时间:2014-08-04 14:32酷播
ffmpeg视频格式转化及flv格式截图

[ffmpeg]ffmpeg视频格式转化及flv格式截图

  1. public static boolean process(String resourcePath) { 
  2.         int type = checkContentType(resourcePath); 
  3.         boolean status = false
  4.         if (type == 0) { 
  5.             status = processFLV(resourcePath);// 直接将文件转为flv文件 
  6.         } 
  7.         return status; 
  8.     } 
  9.  
  10.     private static int checkContentType(String resourcePath) { 
  11.         String type = resourcePath.substring(resourcePath.lastIndexOf(".") + 1, 
  12.                 resourcePath.length()).toLowerCase(); 
  13.         // cuplayer.com ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等) 
  14.         if (type.equals("avi")) { 
  15.             return 0; 
  16.         } else if (type.equals("mpg")) { 
  17.             return 0; 
  18.         } else if (type.equals("wmv")) { 
  19.             return 0; 
  20.         } else if (type.equals("3gp")) { 
  21.             return 0; 
  22.         } else if (type.equals("mov")) { 
  23.             return 0; 
  24.         } else if (type.equals("mp4")) { 
  25.             return 0; 
  26.         } else if (type.equals("asf")) { 
  27.             return 0; 
  28.         } else if (type.equals("asx")) { 
  29.             return 0; 
  30.         } else if (type.equals("flv")) { 
  31.             return 0; 
  32.         } else if (type.equals("mpeg")) { 
  33.             return 0; 
  34.         } else if (type.equals("mpe")) { 
  35.             return 0; 
  36.         } 
  37.         // cuplayer.com 对ffmpeg无法解析的文件格式(wmv9,rm,rmvb等), 
  38.         // 可以先用别的工具(mencoder)转换为avi(ffmpeg能解析的)格式. 
  39.         else if (type.equals("wmv9")) { 
  40.             return 1; 
  41.         } else if (type.equals("rm")) { 
  42.             return 1; 
  43.         } else if (type.equals("rmvb")) { 
  44.             return 1; 
  45.         } 
  46.         return 9; 
  47.     } 
  48.  
  49.     private static boolean checkfile(String path) { 
  50.         File file = new File(path); 
  51.         if (!file.isFile()) { 
  52.             return false; 
  53.         } 
  54.         return true; 
  55.     } 
  56.  
  57.     // ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等) 
  58.     private static boolean processFLV(String resourcePath) { 
  59.  
  60.         if (!checkfile(resourcePath)) { 
  61.             System.out.println(resourcePath + "   is   not   file"); 
  62.             return false; 
  63.         } 
  64.         // 文件命名 
  65.         Calendar c = Calendar.getInstance(); 
  66.         String savename = String.valueOf(c.getTimeInMillis())+ Math.round(Math.random() * 100000); 
  67.         List commend = new ArrayList(); 
  68.         commend.add("e:\\ffmpeg"); 
  69.         commend.add("-i"); 
  70.         commend.add(resourcePath); 
  71. //        commend.add("-ab");//音频流码率:(默认是同源文件码率) 
  72. //        commend.add("56"); 
  73.         commend.add("-ar");//视频流采样率:(大多数情况下使用44100和48000,分别对用PAL和NTSC制式,根据需要选择) 
  74.         commend.add("22050"); 
  75.         commend.add("-qscale");//视频量化指标 
  76.         commend.add("8"); 
  77.         commend.add("-r");//视频流帧数(一般来书PAL制式同常用25,ntsc制式通常用29) 
  78.         commend.add("15"); 
  79.         commend.add("-s");//视频解析度:(分辨率)可以自己定义所需要的大小: 改变视频流的解析式很耗cpu的 
  80.         commend.add("600x500"); 
  81.         commend.add("e:\\" + savename + ".flv"); 
  82.         try { 
  83.             Runtime runtime = Runtime.getRuntime(); 
  84.             Process proce = null
  85.             String cmd = ""
  86.             String cut = "     e://ffmpeg.exe   -i   " 
  87.                     + resourcePath 
  88.                     + "   -y   -f   image2   -ss   8   -t   0.001   -s   600x500   e:\\" 
  89.                     + savename + ".jpg"; 
  90.             String cutCmd = cmd + cut; 
  91.             proce = runtime.exec(cutCmd); 
  92.             ProcessBuilder builder = new ProcessBuilder(commend); 
  93.             // builder.command(commend); 
  94.             builder.start(); 
  95.  
  96.             return true; 
  97.         } catch (Exception e) { 
  98.             e.printStackTrace(); 
  99.             return false; 
  100.         } 
  101.     } 
  102.  
  103.     public static void main(String[] args) { 
  104.         if (!checkfile("e:\\1-android_sdk.flv")) { 
  105.             System.out.println("" + "   is   not   file"); 
  106.             return; 
  107.         } 
  108.         if (process("e:\\1-android_sdk.flv")) { 
  109.             System.out.println("ok"); 
  110.         } 
  111.     } 

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器