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 fileType;
static
{
fileType = new HashMap();
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('');
document.write('');
document.write('');
document.write('');
document.write('');
document.write('');
document.write('" 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('');
【补充说明】如果遇到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
评论
11 楼
lyh20081984
2010-01-26
请问楼主,我照你的原样抄下来,怎么3gp的格式转换不了,大小为零?
10 楼
lyh20081984
2010-01-24
xiaobao0501 写道
呵呵.看来做视频网站的人还不少.
收了.人才啊.
错了,是转换的速度!我用几M的视频文件测试了一下,都要花几分钟时间
9 楼
lyh20081984
2010-01-24
下载的速度太慢
8 楼
xiaobao0501
2009-12-25
呵呵.看来做视频网站的人还不少.
收了.人才啊.
7 楼
tartar
2009-10-22
顶起来 我也没转换出来
6 楼
l02044128
2009-10-12
请问,楼主的附件好用吗???
为什么我用的不好
是我的bat文件没写对吗??
我所有的文件都在d盘下
这样写对吗?
D:\ffmpeg -i D:\a.avi -y -ab 56 -ar 22050 -b 500 -r 15 -s 320*240 D:\
exit
5 楼
iaimstar
2009-10-10
又见高科技
4 楼
prowl
2009-10-10
推荐使用jave
3 楼
Wanghuidong
2009-10-10
我也转换不出来
你那个X:\\ffmpeg.bat 是什么?
ConvertVideo.convertToFLV("X:\\convertVideo", "X:\\a.wmv", "X:\\a.flv"); 中的 X:\\convertVideo又是什么
2 楼
寄生虫
2009-02-19
hanfeng450 写道
麻烦自己检查一次吧
试了一下
你这个例子是转换不出结果来的
我刚才试过了,能运行,也能转换,如果你是把这些代码原封不动的拷贝上去然后执行,那肯定执行不了。
bat文件每行结尾不能有空格,请检查,盘符请对应清楚,我的机器上没有X盘,不知道你的机器有没有,稍微变通一下程序执行是没问题的。
1 楼
hanfeng450
2009-02-19
麻烦自己检查一次吧
试了一下
你这个例子是转换不出结果来的