导航:首页 > 编程语言 > java调用ffmpeg

java调用ffmpeg

发布时间:2022-11-21 22:59:38

㈠ 怎么用java读取ffmpeg输出流

public static void main(String[] args) {

String 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;
}
}

㈡ 在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 不支持 所有平台

㈢ java如何截取视频的帧,生成一个图片

就是可以使用ffmpeg,下载ffmpeg相关组件到电脑中,然后用java调用命令的方式(RunTime.exec相关方法),使用ffmpeg的功能。

㈣ 请教大神,java调用ffmpeg,将两段.wav音频,拼接成一段.wav音频,怎么做

  1. ffmpeg是c实现的,java想调它的api,起码要写一层jni出来,直接在jni层调用ffmpeg的api,然抛到java层去invoke.

  2. 当然还有一种,直接用命令实现,首先你需要编译出可以在你当前环境上运行的ffmpeg,然后配置好拼接音频的参数,使用Runtime的exec来执行这个命令,这种方法虽然简单,但是一旦换个执行环境可能就没有办法使用你本机编译的ffmpeg了,所以不推荐。

㈤ 使用JAVA调用ffmpeg组件进行视频转换时不成功

FFMPEG没有java可以直接调用的API,网上那些基本上是通过调用cmd命令来实现转换的。这种方法很容易出错,效率低而且也不容易调试。最好的办法是让提供商提供flv格式的文件。如果不行你只有测试一下直接用FFMPEG的图形界面转看结果如何,然后尝试更换参数,视频文件和FFMPEG版本。

㈥ 通过ffmpeg实现视频流截图

最近忙于新产品技术点突破,针对架构摸索暂时停住。目前需要解决的问题是如何从视频流中截取一张图。

在安防领域有各种视频监控产品,它们遵循的通讯协议也不尽相同,归纳起来主要遵循GB/T 28181、ONVIF、PSIA等协议。

其通信协议如下所示

在CentOS7上安装ffmpeg

脚本正确调用,接下来就通过Java调用远程服务器上脚本实现视频流截图,在此借助 Ganymed SSH-2 for Java ,实现SSH远程执行脚本。

通过SSH远程执行脚本有点简单粗暴,何不将这截图功能做成服务,向外发布,更加灵活方便。故后期工作如下:
准备一台图片服务器,其主要职责有
1.图片文件存储
2.响应终端的抓图请求,并将图片保存到指定文件夹目录下
3.响应终端的合图请求,以上两者做成服务的形式,终端通过分布式调用服务,完成操作并返回结果状态
4.接收终端上传的图片
硬件需求:
1.因图片服务器上安装ffmpeg工具,其需要对视频流进行解码,并按照png格式组织编码,对计算性能要求高,所以CPU性能要好
2.作为图片文件存储服务器,存储容量要大
3.接受多终端设备连接,网口带宽要大

因为要接收反馈结果,cmd命令可以这样写

当ffmpeg执行正确时,会输出succeeded,当ffmpeg不能正确执行时,会输出failed

新建目录文件夹,将截图文件放入指定文件夹中

㈦ java调取ffmpeg总是弹出命令窗口,我部署到服务器上应该怎么做

你写的web应用 还是普通java应用呢
web应用的话可以用tomcat,java应用 直接有jre就可以的
我用的是小鸟云的服务器,性能稳定,性价比高。

㈧ java使用ffmpeg进行视频截图,不成功,程序也没报错!

我用的是基于C++的ffmpeg开发,ffmpeg原本是针对linux下的GCC编译器,当然通过MinGW也可以在win下进行编译,但是需要安装额外的编译环境,你可以上chinavideo上去看看,那上面说的很清楚,的你所说的问题也不是很难,多看看开发文档就可以解决了。

㈨ ffmpeg录制视频,DOS下没问题,java调用不成功

要注意JAVA下运行和DOS命令行,当中的系统变量是不一定相同的

㈩ 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调用命令行

阅读全文

与java调用ffmpeg相关的资料

热点内容
单片机程序员培训 浏览:988
PHP商城源代码csdn 浏览:632
怎么把电脑里文件夹挪出来 浏览:693
java流程处理 浏览:683
ftp创建本地文件夹 浏览:659
腰椎第一节压缩 浏览:738
xp去掉加密属性 浏览:117
2345怎么压缩文件 浏览:982
迷你夺宝新算法 浏览:407
服务器如何防止木马控制 浏览:715
压缩空气用电磁阀 浏览:742
微信为什么不能设置加密认证 浏览:672
邓伦参加密室逃脱视频 浏览:391
音频压缩编码标准 浏览:300
常提到的app是表示什么 浏览:261
天津程序员传销 浏览:349
下班之后的程序员 浏览:73
检测支持ssl加密算法 浏览:344
衢州发布新闻什么APP 浏览:85
中国移动长沙dns服务器地址 浏览:252