續貼Word/Excel/PDF檔案轉換成HTML整理
1、首先下載下傳ffmpeg(附件即是)
2、将解壓得到的ffmpeg.exe和pthreadGC2.dll檔案解壓到任何目錄(當然也可以是WebRoot中的目錄)
3、建立bat檔案convertVideo.bat并添加以下内容:(參數說明見附錄一)
%1\ffmpeg -i %2 -y -ab 56 -ar 22050 -b 500 -r 15 -s 320*240 %3
exit
******************
%1為ffmpeg存放目錄
%2為需要轉換的檔案路徑
%3為FLV檔案輸出目錄
******************
同樣需要注意的是bat檔案存放的路徑不能包含空格
也可以對視訊進行截取縮略圖哦:)
【轉換檔案格式的同時抓縮微圖】
ffmpeg -i "test.avi" -y -f image2 -ss 8 -t 0.001 -s 350x240 "test.jpg"
【對已有flv抓圖】
ffmpeg -i "test.flv" -y -f image2 -ss 8 -t 0.001 -s 350x240 "test.jpg"
****************
-ss後跟的時間機關為秒
****************
4、建立類
public class ConvertVideo
{
private static String INPUT_PATH;
private static String OUTPUT_PATH;
private static String PROJECT_PATH;
private static HashMap<String, String> fileType;
static
{
fileType = new HashMap<String, String>();
fileType.put("avi", "true");
fileType.put("mpg", "true");
fileType.put("wmv", "true");
fileType.put("3gp", "true");
fileType.put("mov", "true");
fileType.put("mp4", "true");
fileType.put("asf", "true");
fileType.put("asx", "true");
fileType.put("flv", "true");
}
public static void convertToFLV(String projectPath, String inputFile, String outputFile)
{
INPUT_PATH = inputFile;
OUTPUT_PATH = outputFile;
PROJECT_PATH = projectPath;
if (checkContentType())
processFLV();// 直接将檔案轉為flv檔案
}
private static boolean checkContentType()
{
String type = INPUT_PATH.substring(INPUT_PATH.lastIndexOf(".") + 1, INPUT_PATH.length()).toLowerCase();
// ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)
return "true".equals(fileType.get(type));
}
private static void processFLV()
{
if (new File(INPUT_PATH).isFile())
{
try
{
String cmd = "cmd /c start X:\\ffmpeg.bat \"" + PROJECT_PATH + "\" \"" + INPUT_PATH + "\" \"" + OUTPUT_PATH +"\"";
Runtime.getRuntime().exec(cmd);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
}
5、測試代碼
public static void main(String[] args)
{
ConvertVideo.convertToFLV("X:\\convertVideo", "X:\\a.wmv", "X:\\a.flv");
}
6、附一個下載下傳來的flv播放器吧(附件中下載下傳)
var swf_width="100%";
var swf_height="100%";
var files='nba.flv';
var config='0:自動播放|1:連續播放|100:預設音量|0:控制欄位置|2:控制欄顯示|0x000033:主體顔色|60:主體透明度|0x66ff00:光暈顔色|0xffffff:圖示顔色|0xffffff:文字顔色|:logo文字|:logo位址|:結束swf位址';
var texts='NBA精彩進球TOP10';
document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="'+swf_width+'" height="'+swf_height+'">');
document.write('<param name="movie" value="vcastr2.swf"/>');
document.write('<param name="quality" value="high"/>');
document.write('<param name="menu" value="false"/>');
document.write('<param name=wmode value="opaque"/>');
document.write('<param name="FlashVars" value="vcastr_file='+files+'&vcastr_title='+texts+'&vcastr_config='+config+'">');
document.write('<embed src="vcastr2.swf"/>" wmode="opaque" FlashVars="vcastr_file='+files+'&vcastr_title='+texts+'&vcastr_config='+config+'" menu="false" quality="high" width="'+swf_width+'" height="'+swf_height+'" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />');
document.write('</object>');
【補充說明】如果遇到ffmpeg所涉及以外的視訊格式,可以使用其他轉換工具先轉換,例如mencoder。
附錄一(ffmpeg參數說明):
【參數】 | 【說明】 | 【示例】 |
-i "路徑" | 指定需要轉換的檔案路徑 | -i "C:\nba.wmv" |
-y | 覆寫輸出檔案,即如果nba.xxx檔案已經存在的話,直接覆寫 | |
控制畫面參數 | ||
-bitexac | 使用标準比特率 | |
-vcodec xvid | 使用xvid壓縮 | |
-s <寬高比> | 指定分辨率大小 | -s 320*240 |
-r <數值> | 幀速率(非标準數值會導緻音畫不同步【标準值為15或29.97】) | -r 15 |
-b <比特率> | 指定壓縮比特率 | -b 1500 |
-qmin <數值> | 設定最小品質 | -qmin 10 |
-qmax <數值> | 與-qmin相反,可以與-qmin同時使用 | -qmax 30 |
-sameq | 使用與源視訊相同的品質 | |
控制聲音參數 | ||
-acodec aac | 設定聲音編碼 | |
-ac <數值> | 設定聲道數:1為單聲道,2為立體聲 | -ac 2 |
-ar <采樣率> | 設定聲音采樣率(8000,11025,22050) | -ar 22050 |
-ab <比特率> | 設定聲音比特率(-ac設為立體聲時要以一半比特率來設定,比如192kbps的就設成96) | -ab 96 |
-vol <百分比> | 設定音量大小,比如設定200就會比原來的音量大2倍 | -vol 200 |
文章如有不對的地方可以跟帖指正,謝謝:)