java 根据链接链接下视频,java通过url获取音视频文件时长

问题:项目中需要获取音视频文件时长,通过FFmpeg获取。我们的文件上传用的fastDFS,或者七牛云,经常到我们后台的只有个url,无法成功。通过

引入相关的jar包,然后使用。

File mediaFile = new File("http://192.168.31.10:8888/dfs1/M00/00/02/wKgfCl6azIyAE4rXAABcIN-F5V4141.WAV");

MultimediaObject multimediaObject=new MultimediaObject(mediaFile);

MultimediaInfo multimediaInfo = multimediaObject.getInfo();

long playTime = multimediaInfo.getDuration();

System.out.println(playTime);

这样会报错找不到文件,Input file not found;因为new File会创建加上项目地址的文件

看了很多FFmpeg的都是需要本地文件,或者把远程文件下载下来。这样很麻烦,需要本地保存,就涉及到删除,不删除用公用的同一名字涉及到多线程的情况。

解决:参照别人的文档然后改进。。。没找到链接了

查看源码,

MultimediaObject类的getinfo方法

479ed5dd19cefa09fb380e51d594a6c6.png可以看到ffmpeg放入的是文件的inputFile.getAbsolutepath()的绝对路径。

因此不能找到文件。

之前看到的博客说是反编译源码,然后修改代码放入自己的url。重新打包部署。但是这样我们打包不方便管理,而且修改了别人的源码升级不方便。

所以自己把MultimediaObject类copy成FFmpegFileInfo在自己的项目里面。注意包路径要和MultimediaObject的相同,因为有包内方法和类的调用。有两个报错的地方需要注释下,变量m和token;因为MultimediaObject已经定义了。改写getinfo方法如下

ffb1bf4512b58d76f7c74dc3e457b829.png

然后调用

String url = "http://192.168.31.10:8888/dfs1/M00/00/02/wKgfCl6azIyAE4rXAABcIN-F5V4141.WAV";

File mediaFile = new File(url);

FFmpegFileInfo ffmpegFileInfo = new FFmpegFileInfo(mediaFile);

MultimediaInfo multimediaInfo = null;

multimediaInfo = ffmpegFileInfo.getInfo(url);

long playTime = multimediaInfo.getDuration();

System.out.println(playTime);

就可以得到音视频时长。

原文:https://www.cnblogs.com/chenbinaiqiuyu/p/12736814.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值