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

[ffmpeg]ffmpeg代码转换视频的实例并实现截图功能

时间:2014-08-04 14:34酷播
[ffmpeg]ffmpeg代码转换视频的实例并实现截图功能

在项目中需要上传视频,并且需要使用播放器播放视频。客户要求播放器要显示一个缩略图。在网上搜并参看了相关的书籍,提供了一下的解决方案,采用 ffmpeg进行视频转换并从视频中截取相应的帧作为缩略图,在前台使用flvplay.swf播放器进行视频的播放盒缩略图的显示。具体解决方案如下:
1.使用ffmpeg进行视频转换以及截图的代码如下(忘了参考那本书上的代码):

  1. /** 
  2.      * @功能:①转换上传的视频为FLV格式;②从上传的视频中截图。 
  3.      * @参数:①upFilePath: 用于指定要转换格式的文件路径;以及用来指定要截图的视频。<br> 
  4.      * @参数:②flvFilePath:用于指定转换为FLV格式后的文件的保存路径。<br> 
  5.      * @参数:③cutPicPath: 用于指定截取的图片的保存路径 
  6.      * @返回:boolean型值 
  7.      */ 
  8.     private boolean convertVideo(String upFilePath, String flvFilePath, 
  9.             String cutPicPath) { 
  10.         String ffmpegPath = getServletContext().getRealPath("\\Video\\")+"\\ffmpeg.exe"; // 获取在web.xml中配置的转换工具(ffmpeg.exe)的存放路径 
  11.         // 创建一个List集合来保存转换视频文件为flv格式的命令 
  12.         List<String> convert = new ArrayList<String>(); 
  13.         convert.add(ffmpegPath); // 添加转换工具路径 
  14.         convert.add("-i"); // 添加参数"-i",该参数指定要转换的文件 
  15.         convert.add(upFilePath); // 添加要转换格式的视频文件的路径 
  16.         convert.add("-qscale"); 
  17.         convert.add("6"); 
  18.         convert.add("-ab"); 
  19.         convert.add("64"); 
  20.         convert.add("-acodec"); 
  21.         convert.add("mp3"); 
  22.         convert.add("-ac"); 
  23.         convert.add("2"); 
  24.         convert.add("-ar"); 
  25.         convert.add("22050"); 
  26.         convert.add("-r"); 
  27.         convert.add("24"); 
  28.         convert.add("-y"); // 添加参数"-y",该参数指定将覆盖已存在的文件 
  29.         convert.add(flvFilePath); 
  30.         
  31.         // 创建一个List集合来保存从视频中截取图片的命令 
  32.         List<String> cutpic = new ArrayList<String>(); 
  33.         cutpic.add(ffmpegPath); 
  34.         cutpic.add("-i"); 
  35.         cutpic.add(upFilePath); // 同上(指定的文件即可以是转换为flv格式之前的文件,也可以是转换的flv文件) 
  36.         cutpic.add("-y"); 
  37.         cutpic.add("-f"); 
  38.         cutpic.add("image2"); 
  39.         cutpic.add("-ss"); // 添加参数"-ss",该参数指定截取的起始时间 
  40.         cutpic.add("2"); // 添加起始时间为第9秒 
  41.         cutpic.add("-t"); // 添加参数"-t",该参数指定持续时间 
  42.         cutpic.add("0.001"); // 添加持续时间为1毫秒 
  43.         cutpic.add("-s"); // 添加参数"-s",该参数指定截取的图片大小 
  44.         cutpic.add("350*240"); // 添加截取的图片大小为350*240 
  45.         cutpic.add(cutPicPath); // 添加截取的图片的保存路径 
  46.  
  47.         boolean mark = true
  48.         ProcessBuilder builder = new ProcessBuilder(); 
  49.         try { 
  50.             builder.command(convert); 
  51.             builder.start(); 
  52.             builder.command(cutpic); 
  53.             builder.start(); 
  54.         } catch (Exception e) { 
  55.             mark = false
  56.             System.out.println(e); 
  57.             e.printStackTrace(); 
  58.         } 
  59.         return mark; 
  60.     } 

2. 极酷阳光播放器调用:

  1. <script type="text/javascript" src="/player/images/swfobject.js"></script> 
  2. <div class="video" id="CuPlayer"><b>网页视频播放器加载中,请稍后...</b></div> 
  3. <script type="text/javascript"> 
  4. var so = new SWFObject("/Player/player.swf","ply","520","325","9","#000000"); 
  5. so.addParam("allowfullscreen","true"); 
  6. so.addParam("allowscriptaccess","always"); 
  7. so.addParam("wmode","opaque"); 
  8. so.addParam("quality","high"); 
  9. so.addParam("salign","lt"); 
  10. so.addVariable("JcScpFile","/Player/CuSunV2Set.xml"); 
  11. so.addVariable("JcScpVideoPath","http://demo.cuplayer.com/file/test.mp4"); 
  12. so.addVariable("JcScpImg","/player/Images/flashChangfa2.jpg"); 
  13. so.write("CuPlayer"); 
  14. </script> 

 

热门文章推荐

请稍候...

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

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