ffmpeg轉換視頻并截圖,flvplay.swf播放視頻
在項目中需要上傳視頻,并且需要使用播放器播放視頻。客戶要求播放器要顯示一個縮略圖。在網上搜并參看了相關的書籍,提供了一下的解決方案,采用 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; }</pre> <p>2.使用flvplayer.swf顯示縮略圖并播放視頻代碼如下: <pre class="brush:xml; toolbar: true; auto-links: false;"><table>
<tr> <!-- 嵌入Flash播放器 --> <td align="center"> <object width="452" height="339" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"> <param name="movie" value="<%=basePath%>Video/flvplayer.swf?file=<%=basePath%>uploadVideos/${video.url}&image=<%=basePath%>uploadVideos/${video.pic}"/> <embed src="<%=basePath%>/Video/flvplayer.swf?file=<%=basePath%>uploadVideos/${video.pic}" width="40%" height="30%"> </embed> </object> </td> </tr> </table></pre>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!