java 获取视频信息_Java获取视频参数信息
Java获取视频参数信息
资料收集
经过搜索常用的处理视频的方式有两种:xuggler 和 ffmpeg
因ffmpeg 需要使用JNI调用,这里采用xuggler方式
使用xuggler获取视频宽、高、时长等信息
以下内容参考这篇文章
引入maven配置 xuggle 依赖 slf4j-api
xuggle
xuggle-xuggler
5.4
org.slf4j
slf4j-api
1.7.25
org.slf4j
slf4j-log4j12
1.7.25
测试代码
import com.xuggle.xuggler.ICodec;
import com.xuggle.xuggler.IContainer;
import com.xuggle.xuggler.IStream;
import com.xuggle.xuggler.IStreamCoder;
public class XuggleTest {
public static void main(String[] args) {
String filename = "/home/langzi/Videos/2a8ea83e4e674a8fb1c5bcf9b6313ca5.mp4";
// first we create a Xuggler container object
IContainer container = IContainer.make();
// we attempt to open up the container
int result = container.open(filename, IContainer.Type.READ, null);
// check if the operation was successful
if (result<0)
throw new RuntimeException("Failed to open media file");
// query how many streams the call to open found
int numStreams = container.getNumStreams();
// query for the total duration
long duration = container.getDuration();
// query for the file size
long fileSize = container.getFileSize();
// query for the bit rate
long bitRate = container.getBitRate();
System.out.println("Number of streams: " + numStreams);
System.out.println("Duration (ms): " + duration);
System.out.println("File Size (bytes): " + fileSize);
System.out.println("Bit Rate: " + bitRate);
// iterate through the streams to print their meta data
for (int i=0; i
// find the stream object
IStream stream = container.getStream(i);
// get the pre-configured decoder that can decode this stream;
IStreamCoder coder = stream.getStreamCoder();
System.out.println("*** Start of Stream Info ***");
System.out.printf("stream %d: ", i);
System.out.printf("type: %s; ", coder.getCodecType());
System.out.printf("codec: %s; ", coder.getCodecID());
System.out.printf("duration: %s; ", stream.getDuration());
System.out.printf("start time: %s; ", container.getStartTime());
System.out.printf("timebase: %d/%d; ",
stream.getTimeBase().getNumerator(),
stream.getTimeBase().getDenominator());
System.out.printf("coder tb: %d/%d; ",
coder.getTimeBase().getNumerator(),
coder.getTimeBase().getDenominator());
System.out.println();
if (coder.getCodecType() == ICodec.Type.CODEC_TYPE_AUDIO) {
System.out.printf("sample rate: %d; ", coder.getSampleRate());
System.out.printf("channels: %d; ", coder.getChannels());
System.out.printf("format: %s", coder.getSampleFormat());
} else if (coder.getCodecType() == ICodec.Type.CODEC_TYPE_VIDEO) {
System.out.printf("width: %d; ", coder.getWidth());
System.out.printf("height: %d; ", coder.getHeight());
System.out.printf("format: %s; ", coder.getPixelType());
System.out.printf("frame-rate: %5.2f; ", coder.getFrameRate().getDouble());
}
System.out.println();
System.out.println("*** End of Stream Info ***");
}
}
}
执行结果
java 获取视频信息_Java获取视频参数信息相关推荐
- python ffmpeg 获取视频信息_ffmpeg获取视频信息
php使用ffmpeg获取视频信息可以获取到视频的分辨率.文件大小.播放时长.编码格式.视频格式.音频编码.音频采样频率.等..... 废话不多说,直接上代码.../** * Name: ffmpeg ...
- C#net6实现Linux系统下修改IP地址、修改系统时间、获取内存信息、获取磁盘信息、重启系统
C#net6实现Linux系统下修改IP地址.修改系统时间.获取内存信息.获取磁盘信息.重启系统 背景 项目背景 实现思路 代码实现 背景 随着微软.net core的出现,C#程序实现跨平台不在困难 ...
- java 优酷视频缩略图_java获取优酷等视频缩略图
类型:Android平台大小:6.8M语言:中文 评分:7.2 标签: 立即下载 想获取优酷等视频缩略图,在网上没有找到满意的资料,参考了huangdijia的PHP版工具一些思路,写了下面的JAVA ...
- java 获取mp4 缩略图_java获取视频缩略图
近期由于在做一个关于视频播放的项目,需要使用程序自动获取视频文件的缩略图,特写此文供其他人参考,有不清楚之楚可以给我留言. 1.使用工具:ffmpeg, 官网下载地址:http://ffmpeg.or ...
- java 视频 缩略图_java获取视频缩略图
近期由于在做一个关于视频播放的项目,需要使用程序自动获取视频文件的缩略图,特写此文供其他人参考,有不清楚之楚可以给我留言. 1.使用工具:ffmpeg, 官网下载地址:http://ffmpeg.or ...
- java如何截取视频文件_Java获取视频时长及截取帧截图详解
前言 只是最近碰到有这方面的项目需求,所以简单 Mark 下本文.下面的示例是参考过他人分享的文章,之后本人再自行实践.调整和测试过的,希望对有这方面需求的人有所帮助. 示例 添加依赖 org.byt ...
- 获取java异常堆栈信息_Java 实例 - 获取异常的堆栈信息
全屏 Java 实例 - 获取异常的堆栈信息 以下实例演示了使用异常类的 printStack() 方法来获取堆栈信息: Main.java 文件public class Main{ public s ...
- java根据手机号获取微信信息_Java实现的微信公众号获取微信用户信息示例
本文实例讲述了Java实现的微信公众号获取微信用户信息.分享给大家供大家参考,具体如下: 注: 这里获取用户信息方式和网页授权获取用户信息方式不同.两个access_token不同,返回的结果也不同. ...
- java获取文件地址吗_java获取文件所在服务器位置路径
1.通过 import javax.servlet.ServletContext 类获取web 服务器所在真实路径 public ActionForward execute( ActionMappin ...
最新文章
- 显示计算机硬盘驱动器更改,笔记本硬盘驱动器的字母怎么修改?笔记本修改硬盘驱动器字母的方法...
- PHP问题 —— Warning: PHP Startup: Unable to load dyna
- 树-堆结构练习——合并果子之哈夫曼树
- android 中TextView设置部分文字背景色和文字颜色
- 电路基本概念有哪些?
- 单行溢出 和多行溢出
- SUBSTR函数的使用
- !!统计字符(处理字符串)(getline函数使用)
- 利用深度卷积模型对巴拉科咖啡叶疾病进行分类
- 阿衰小冲用计算机,《阿衰漫画》小衰学电脑,差点扔进垃圾桶,ESC怎么没有作用?...
- 学校计算机教室自查报告,学校专用教室自查报告范文
- n维空间被m个n-1维的“刀”最多切出多少块
- 【python】用递归解决汉洛塔问题
- seo引流怎么做?SEO引流方法有哪些?如何做好seo引流
- 07 HSV和HSL和YUV
- WinRAR 5.71 中文64位版去除弹窗广告的解决方法
- 初链(true)混合共识算法分析与评估
- CSDN副总裁孟岩:通证经济带来新的协作模式|筱静观察
- 杭电电子考研经验交流
- 出错解决 | Error: cannot allocate vector of size 109.7 Mb