首页 > 编程语言 > 详细

java通过url获取音视频文件时长

时间:2020-04-20 13:54:12      阅读:845      评论:0      收藏:0      [点我收藏+]

问题:项目中需要获取音视频文件时长,通过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<D:\devtool\idea\study\newfeatures\http:\192.168.31.10:8888\dfs1\M00\00\02\wKgfCl6azIyAE4rXAABcIN-F5V4141.WAV>;因为new File会创建加上项目地址的文件
看了很多FFmpeg的都是需要本地文件,或者把远程文件下载下来。这样很麻烦,需要本地保存,就涉及到删除,不删除用公用的同一名字涉及到多线程的情况。

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

查看源码,

MultimediaObject类的getinfo方法

技术分享图片可以看到ffmpeg放入的是文件的inputFile.getAbsolutepath()的绝对路径。

因此不能找到文件。

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

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

技术分享图片

然后调用
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);

就可以得到音视频时长。


java通过url获取音视频文件时长

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!