天天看點

使用ffmpeg進行視訊檔案轉換成FLV整理

續貼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

文章如有不對的地方可以跟帖指正,謝謝:)