[ffmpeg]ffmpeg代码转换视频的实例并实现截图功能
[ffmpeg]ffmpeg代码转换视频的实例并实现截图功能
在项目中需要上传视频,并且需要使用播放器播放视频。客户要求播放器要显示一个缩略图。在网上搜并参看了相关的书籍,提供了一下的解决方案,采用 ffmpeg进行视频转换并从视频中截取相应的帧作为缩略图,在前台使用flvplay.swf播放器进行视频的播放盒缩略图的显示。具体解决方案如下:
1.使用ffmpeg进行视频转换以及截图的代码如下(忘了参考那本书上的代码):
- /**
- * @功能:①转换上传的视频为FLV格式;②从上传的视频中截图。
- * @参数:①upFilePath: 用于指定要转换格式的文件路径;以及用来指定要截图的视频。<br>
- * @参数:②flvFilePath:用于指定转换为FLV格式后的文件的保存路径。<br>
- * @参数:③cutPicPath: 用于指定截取的图片的保存路径
- * @返回:boolean型值
- */
- private boolean convertVideo(String upFilePath, String flvFilePath,
- String cutPicPath) {
- String ffmpegPath = getServletContext().getRealPath("\\Video\\")+"\\ffmpeg.exe"; // 获取在web.xml中配置的转换工具(ffmpeg.exe)的存放路径
- // 创建一个List集合来保存转换视频文件为flv格式的命令
- List<String> convert = new ArrayList<String>();
- convert.add(ffmpegPath); // 添加转换工具路径
- convert.add("-i"); // 添加参数"-i",该参数指定要转换的文件
- convert.add(upFilePath); // 添加要转换格式的视频文件的路径
- convert.add("-qscale");
- convert.add("6");
- convert.add("-ab");
- convert.add("64");
- convert.add("-acodec");
- convert.add("mp3");
- convert.add("-ac");
- convert.add("2");
- convert.add("-ar");
- convert.add("22050");
- convert.add("-r");
- convert.add("24");
- convert.add("-y"); // 添加参数"-y",该参数指定将覆盖已存在的文件
- convert.add(flvFilePath);
- // 创建一个List集合来保存从视频中截取图片的命令
- List<String> cutpic = new ArrayList<String>();
- cutpic.add(ffmpegPath);
- cutpic.add("-i");
- cutpic.add(upFilePath); // 同上(指定的文件即可以是转换为flv格式之前的文件,也可以是转换的flv文件)
- cutpic.add("-y");
- cutpic.add("-f");
- cutpic.add("image2");
- cutpic.add("-ss"); // 添加参数"-ss",该参数指定截取的起始时间
- cutpic.add("2"); // 添加起始时间为第9秒
- cutpic.add("-t"); // 添加参数"-t",该参数指定持续时间
- cutpic.add("0.001"); // 添加持续时间为1毫秒
- cutpic.add("-s"); // 添加参数"-s",该参数指定截取的图片大小
- cutpic.add("350*240"); // 添加截取的图片大小为350*240
- cutpic.add(cutPicPath); // 添加截取的图片的保存路径
- boolean mark = true;
- ProcessBuilder builder = new ProcessBuilder();
- try {
- builder.command(convert);
- builder.start();
- builder.command(cutpic);
- builder.start();
- } catch (Exception e) {
- mark = false;
- System.out.println(e);
- e.printStackTrace();
- }
- return mark;
- }
2. 极酷阳光播放器调用:
- <script type="text/javascript" src="/player/images/swfobject.js"></script>
- <div class="video" id="CuPlayer"><b>网页视频播放器加载中,请稍后...</b></div>
- <script type="text/javascript">
- var so = new SWFObject("/Player/player.swf","ply","520","325","9","#000000");
- so.addParam("allowfullscreen","true");
- so.addParam("allowscriptaccess","always");
- so.addParam("wmode","opaque");
- so.addParam("quality","high");
- so.addParam("salign","lt");
- so.addVariable("JcScpFile","/Player/CuSunV2Set.xml");
- so.addVariable("JcScpVideoPath","http://demo.cuplayer.com/file/test.mp4");
- so.addVariable("JcScpImg","/player/Images/flashChangfa2.jpg");
- so.write("CuPlayer");
- </script>
热门文章推荐
- [FFmpeg]ffmpeg各类参数说明与使用示例
- [FFmpeg]ffmpeg命令参数详解(帮助说明)强大所有参数
- [ffmpeg]FFmpeg参数命令及用法整理(很全面详细)
- [FFmpeg]图文介绍windows下实现编译ffmpeg工程的详细步骤
- [ffmpeg]ffmpeg使用参数的中文说明
- [ffmpeg]如何使用ffmpeg下载分段并加密的m3u8视频流
- [FFmpeg]php下用ffmpeg扩展实现视频转换截图
- [FFmpeg]ffmpeg支持的格式全解析
请稍候...