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获取视频参数信息相关推荐

  1. python ffmpeg 获取视频信息_ffmpeg获取视频信息

    php使用ffmpeg获取视频信息可以获取到视频的分辨率.文件大小.播放时长.编码格式.视频格式.音频编码.音频采样频率.等..... 废话不多说,直接上代码.../** * Name: ffmpeg ...

  2. C#net6实现Linux系统下修改IP地址、修改系统时间、获取内存信息、获取磁盘信息、重启系统

    C#net6实现Linux系统下修改IP地址.修改系统时间.获取内存信息.获取磁盘信息.重启系统 背景 项目背景 实现思路 代码实现 背景 随着微软.net core的出现,C#程序实现跨平台不在困难 ...

  3. java 优酷视频缩略图_java获取优酷等视频缩略图

    类型:Android平台大小:6.8M语言:中文 评分:7.2 标签: 立即下载 想获取优酷等视频缩略图,在网上没有找到满意的资料,参考了huangdijia的PHP版工具一些思路,写了下面的JAVA ...

  4. java 获取mp4 缩略图_java获取视频缩略图

    近期由于在做一个关于视频播放的项目,需要使用程序自动获取视频文件的缩略图,特写此文供其他人参考,有不清楚之楚可以给我留言. 1.使用工具:ffmpeg, 官网下载地址:http://ffmpeg.or ...

  5. java 视频 缩略图_java获取视频缩略图

    近期由于在做一个关于视频播放的项目,需要使用程序自动获取视频文件的缩略图,特写此文供其他人参考,有不清楚之楚可以给我留言. 1.使用工具:ffmpeg, 官网下载地址:http://ffmpeg.or ...

  6. java如何截取视频文件_Java获取视频时长及截取帧截图详解

    前言 只是最近碰到有这方面的项目需求,所以简单 Mark 下本文.下面的示例是参考过他人分享的文章,之后本人再自行实践.调整和测试过的,希望对有这方面需求的人有所帮助. 示例 添加依赖 org.byt ...

  7. 获取java异常堆栈信息_Java 实例 - 获取异常的堆栈信息

    全屏 Java 实例 - 获取异常的堆栈信息 以下实例演示了使用异常类的 printStack() 方法来获取堆栈信息: Main.java 文件public class Main{ public s ...

  8. java根据手机号获取微信信息_Java实现的微信公众号获取微信用户信息示例

    本文实例讲述了Java实现的微信公众号获取微信用户信息.分享给大家供大家参考,具体如下: 注: 这里获取用户信息方式和网页授权获取用户信息方式不同.两个access_token不同,返回的结果也不同. ...

  9. java获取文件地址吗_java获取文件所在服务器位置路径

    1.通过 import javax.servlet.ServletContext 类获取web 服务器所在真实路径 public ActionForward execute( ActionMappin ...

最新文章

  1. 显示计算机硬盘驱动器更改,笔记本硬盘驱动器的字母怎么修改?笔记本修改硬盘驱动器字母的方法...
  2. PHP问题 —— Warning: PHP Startup: Unable to load dyna
  3. 树-堆结构练习——合并果子之哈夫曼树
  4. android 中TextView设置部分文字背景色和文字颜色
  5. 电路基本概念有哪些?
  6. 单行溢出 和多行溢出
  7. SUBSTR函数的使用
  8. !!统计字符(处理字符串)(getline函数使用)
  9. 利用深度卷积模型对巴拉科咖啡叶疾病进行分类
  10. 阿衰小冲用计算机,《阿衰漫画》小衰学电脑,差点扔进垃圾桶,ESC怎么没有作用?...
  11. 学校计算机教室自查报告,学校专用教室自查报告范文
  12. n维空间被m个n-1维的“刀”最多切出多少块
  13. 【python】用递归解决汉洛塔问题
  14. seo引流怎么做?SEO引流方法有哪些?如何做好seo引流
  15. 07 HSV和HSL和YUV
  16. WinRAR 5.71 中文64位版去除弹窗广告的解决方法
  17. 初链(true)混合共识算法分析与评估
  18. CSDN副总裁孟岩:通证经济带来新的协作模式|筱静观察
  19. 杭电电子考研经验交流
  20. 出错解决 | Error: cannot allocate vector of size 109.7 Mb

热门文章

  1. Github图片加速心得
  2. 比特飞使用的是什么主题
  3. JAVA对接支付宝支付(超详细,一看就懂)
  4. 决策报表服务器安装_无服务器流处理如何使决策更加容易
  5. heroku服务器_如何在Heroku上使用Express服务器部署React应用
  6. electerm,免费开源的SSH桌面终端,像xshell、termius一样好用
  7. Spring DI注入规则
  8. 一个Python爬虫工程师学习养成记
  9. mysql的库与表的增删查改
  10. 在idea上配置hadoop开发环境,使用maven配置hadoop的依赖,自动管理相关jar包