ffmpeg轉換視頻并截圖,flvplay.swf播放視頻

jopen 11年前發布 | 29K 次閱讀 多媒體處理 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;
}</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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!