A. java 调用 ffmpeg 进行视频截取
ffmpeg -y -i SF160114692.flv -vcodec -acodec -ss 00:02:00.000
-t 0:5:30 -f flv 3.flv
(1)用源-ss指定开始时间,用hh:mm:ss[.ms]格式,或者换算成用秒计。
(2)用-t指定时间长度,和-ss的格式一样,用hh:mm:ss[.ms]格式,或者换算成用秒计。
java中可以使用ProcessBuilder调用命令行
B. java上传视频除了检查后缀,怎么判断文件格式,前8位来判断.flv格式有的00000018有的464C5601可靠么求解
利用js就可以判断上传文件的后缀名,而且谷歌火狐ie都可以,可以判断大小和后缀,从网上找找,找不到我给你
C. 用JAVA调用ffmpeg实现将各种视频格式转为flv时,怎样做出简单操作的界面
源代码肯定不会贴给你的,思路可以说下!
首先,你在后台把各格式的相互转换函数写好比如,rm2flv,wav2flv,自己去掉人家的借口,找下demo代码。
然后,做一个表单网页,能上传源文件到服务器,点击上传提交任务
最后,上传完毕,判断文件格式(后缀),然后调用对应的函数进行转换,转换完毕后,可以给出转换信息,如文件大小,转换时间,转换后文件url地址等
完毕!
D. 怎么用java读取ffmpeg输出流
public static void main(String[] args) {
result = processFLV("E:\\test\\京视传媒\\体育类\\xiao.flv");
PatternCompiler compiler =new Perl5Compiler();
try {
String regexDuration ="Duration: (.*?), start: (.*?), bitrate: (\\d*) kb\\/s";
String regexVideo ="Video: (.*?), (.*?), (.*?)[,\\s]";
String regexAudio ="Audio: (\\w*), (\\d*) Hz";
Pattern patternDuration = compiler.compile(regexDuration,Perl5Compiler.CASE_INSENSITIVE_MASK);
PatternMatcher matcherDuration = new Perl5Matcher();
if(matcherDuration.contains(result, patternDuration)){
MatchResult re = matcherDuration.getMatch();
System.out.println("提取出播放时间 ===" +re.group(1));
System.out.println("开始时间 =====" +re.group(2));
System.out.println("bitrate 码率 单位 kb==" +re.group(3));
}
Pattern patternVideo = compiler.compile(regexVideo,Perl5Compiler.CASE_INSENSITIVE_MASK);
PatternMatcher matcherVideo = new Perl5Matcher();
if(matcherVideo.contains(result, patternVideo)){
MatchResult re = matcherVideo.getMatch();
System.out.println("编码格式 ===" +re.group(1));
System.out.println("视频格式 ===" +re.group(2));
System.out.println(" 分辨率 == =" +re.group(3));
}
Pattern patternAudio = compiler.compile(regexAudio,Perl5Compiler.CASE_INSENSITIVE_MASK);
PatternMatcher matcherAudio = new Perl5Matcher();
if(matcherAudio.contains(result, patternAudio)){
MatchResult re = matcherAudio.getMatch();
System.out.println("音频编码 ===" +re.group(1));
System.out.println("音频采样频率 ===" +re.group(2));
}
} catch (MalformedPatternException e) {
e.printStackTrace();
}
}
// ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)
private static String processFLV(String inputPath) {
/*
if (!checkfile(inputPath)){
_log.warn(inputPath+" is not file");
return false;
}
*/
List<String> commend=new java.util.ArrayList<String>();
// commend.add("e:\\videoconver\\ffmpeg\\ffmpeg ");//可以设置环境变量从而省去这行
commend.add("ffmpeg");
commend.add("-i");
commend.add(inputPath);
try {
ProcessBuilder builder = new ProcessBuilder();
builder.command(commend);
builder.redirectErrorStream(true);
Process p= builder.start();
//1. start
BufferedReader buf = null; // 保存ffmpeg的输出结果流
String line = null;
//read the standard output
buf = new BufferedReader(new InputStreamReader(p.getInputStream()));
StringBuffer sb= new StringBuffer();
while ((line = buf.readLine()) != null) {
System.out.println(line);
sb.append(line);
continue;
}
int ret = p.waitFor();//这里线程阻塞,将等待外部转换进程运行成功运行结束后,才往下执行
//1. end
return sb.toString();
} catch (Exception e) {
// System.out.println(e);
return null;
}
}
E. 急急急!!!java 用ffmpeg将上传的视频转成 .mp4 .ogg .webm 3种格式的视频,没思路,麻烦大神给点思路
1、 先写一个线程,建个队列。(把要转码的视频放到队列)
2、(最好用linux)在linux上安装ffmpeg转码工具
3、用java执行linxu命令,例:cmdString = "ffmpeg -y -i {0} -ar 44100 -vcodec libx264 {1}";({0}是要转码的视频,{1}是转码后的)。
实现起来也不是很简单,加油吧。
补充一下:至于转码前的视频类型,最好要做限制,如果不限制的话,还需要调用mencoder或者其他转码工具,mencoder我用过,比较难用,而且特慢。
F. 请问用java怎么实现接收电视卡的信号 然后转换成flv格式的流媒体 然后在网页上播放
这个问题你自己解决貌似难了点,首先你得设计一个驱动程序,用来与电视卡接收端接轨,其次就是信号转换问题了。
G. 使用JAVA调用ffmpeg组件进行视频转换时不成功
FFMPEG没有java可以直接调用的API,网上那些基本上是通过调用cmd命令来实现转换的。这种专方法很容易出错,效率属低而且也不容易调试。最好的办法是让提供商提供flv格式的文件。如果不行你只有测试一下直接用FFMPEG的图形界面转看结果如何,然后尝试更换参数,视频文件和FFMPEG版本。
H. 在Java中怎样把所有的视频都转换成flv格式
java调用ffmpeg执行视频转换
ffmpeg.exe能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)
对ffmpeg.exe无法解析的文件格式(wmv9,rm,rmvb等),
可以先用别的工具(mencoder)转换为avi(ffmpeg能解析的)格式;
mencoder.exe;drv43260.dll;pncrt.dll这3个文件是为文件格式(wmv9,rm,rmvb等)
转换为avi(ffmpeg能解析的)格式准备的;再把转换好的avi文件再用ffmpeg.exe转换成flv格式的视频文件。。。
缺点: 要装第三方东西
用jmf。编程以前,你需要安装JMF。
而且 jmf 不支持 所有平台