jave (java的ffmpeg框架)简单使用
引入文件(
- jave-native-win64 windows 64位系统
jave-native-linux64 linux 64位系统
按自己服务器系统来替换
)
- <dependency>
- <groupId>ws.schild</groupId>
- <artifactId>jave-core</artifactId>
- <version>2.4.6</version>
- </dependency>
- <dependency>
- <groupId>ws.schild</groupId>
- <artifactId>jave-native-win64</artifactId>
- <version>2.4.6</version>
- </dependency>
压缩视频
- File source = new File("e:/视频/第八课.mp4");
- File target = new File("e:/视频/第八课_ys.mp4");
- long time = System.currentTimeMillis();
- try {
- MultimediaObject object = new MultimediaObject(source);
- AudioInfo audioInfo = object.getInfo().getAudio();
- AudioAttributes audio = new AudioAttributes();
- audio.setCodec("libmp3lame");
- if(audioInfo.getBitRate() > 128000){
- audio.setBitRate(new Integer(128000));
- }
- audio.setChannels(audioInfo.getChannels());
- if(audioInfo.getSamplingRate() > 48050){
- audio.setSamplingRate(new Integer(48050));
- }
- VideoInfo videoInfo = object.getInfo().getVideo();
- VideoAttributes video = new VideoAttributes();
- video.setCodec("h264");
- if(videoInfo.getBitRate() > 800000){
- video.setBitRate(new Integer(800000));
- }
- if(videoInfo.getFrameRate() > 20){
- video.setFrameRate(new Integer(20));
- }
- int width = videoInfo.getSize().getWidth();
- int height = videoInfo.getSize().getHeight();
- if(width > 1280){
- float rat = (float) width / 1280;
- video.setSize(new VideoSize(1280,(int)(height/rat)));
- }
- EncodingAttributes attr = new EncodingAttributes();
- attr.setFormat("mp4");
- attr.setAudioAttributes(audio);
- attr.setVideoAttributes(video);
- Encoder encoder = new Encoder();
- encoder.encode(object, target, attr);
- System.out.println("耗时:" + (System.currentTimeMillis() - time)/1000);
- } catch (Exception e) {
- e.printStackTrace();
- }
获取视频某个帧的图片
- long times = System.currentTimeMillis();
- File source = new File("e:/视频/第八课_ys.mp4");
- File target = new File("e:/视频/第八课_ys.png");
- MultimediaObject object = new MultimediaObject(source);
- try {
- VideoInfo videoInfo = object.getInfo().getVideo();
- VideoAttributes video = new VideoAttributes();
- video.setCodec("png");
- video.setSize(videoInfo.getSize());
- EncodingAttributes attrs = new EncodingAttributes();
- attrs.setFormat("image2");
- attrs.setOffset(3f);//设置偏移位置,即开始转码位置(3秒)
- attrs.setDuration(0.01f);//设置转码持续时间(1秒)
- attrs.setVideoAttributes(video);
- Encoder encoder = new Encoder();
- encoder.encode(object,target,attrs);
- } catch (EncoderException e) {
- e.printStackTrace();
- }
- System.out.println("耗时:"+(System.currentTimeMillis() - times));
jave (java的ffmpeg框架)简单使用的更多相关文章
- Java使用FFmpeg处理视频文件指南
Java使用FFmpeg处理视频文件指南 本文主要讲述如何使用Java + FFmpeg实现对视频文件的信息提取.码率压缩.分辨率转换等功能: 之前在网上浏览了一大圈Java使用FFmpeg处理音视频 ...
- Java使用FFmpeg处理视频文件的方法教程
这篇文章主要给大家介绍了关于Java使用FFmpeg处理视频文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧 前言 本文主要 ...
- 9个基于Java的搜索引擎框架
在这个信息相当繁杂的互联网时代,我们已经学会了如何利用搜索引擎这个强大的利器来找寻目标信息,比如你会在Google上搜索情人节如何讨女朋友欢心,你也会在百度上寻找正规的整容医疗机构(尽管有很大一部分广 ...
- cache4j轻量级java内存缓存框架,实现FIFO、LRU、TwoQueues缓存模型
简介 cache4j是一款轻量级java内存缓存框架,实现FIFO.LRU.TwoQueues缓存模型,使用非常方便. cache4j为java开发者提供一种更加轻便的内存缓存方案,杀鸡焉用EhCac ...
- Hibernate框架简单应用
Hibernate框架简单应用 Hibernate的核心组件在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层.它通过配置文件(hibernate.proper ...
- 5个强大的Java分布式缓存框架推荐
在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没有选择更优的 缓存策略,那么到时候重构起来将会是一个噩梦.本文主要是分享了 ...
- java的集合框架最全详解
java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...
- venus java高并发框架
http://www.iteye.com/topic/1118484 因为有 netty.mima等远程框架.包括spring jboss等remoting框架 和阿里的dubbo相比, 没有亮点.. ...
- Java日志系统框架的设计与实现
推荐一篇好的文章介绍java日志系统框架的设计的文章:http://soft.chinabyte.com/database/438/11321938.shtml 文章内容总结: 日志系统对跟踪调试.程 ...
随机推荐
- Spring Boot2.0之整合多数据源
一般公司分两个数据库: 一个放共同配置文件, 一个数据库垂直业务数据库 垂直拆分和水平拆分: 垂直是根据业务划分具体数据库 在一个项目中有多个数据源(不同库jdbc) 无限个的哈~ 根据包名 或者 注 ...
- 点分治Day2 动态树分治
蒟蒻Ez3real冬令营爆炸之后滚回来更新blog... 我们看一道题 bzoj3924 ZJOI2015D1T1 幻想乡战略游戏 给一棵$n$个点的树$(n \leqslant 150000)$ 点 ...
- HiHoCoder1671 : 反转子串([Offer收割]编程练习赛41)(占位)
描述 给定一个只包含括号和小写字母的字符串S,例如S="a(bc(de)fg)hijk". 其中括号表示将里面的字符串翻转.(注意括号可能嵌套) 请你输出翻转之后的字符串. 输入 ...
- liunx让命令窗口显示段路径的方法
平时我们使用linux终端命令行的时候,常常会被一个问题困扰,那就是文件路径过长,有时候甚至超过了一行,这样看起来非常别扭,其实只要两步就可以解决这个问题: 1,修改.bashrc文件(用户根目录下) ...
- bzoj 4319: Suffix reconstruction 后缀数组+构造
题目大意 给定后缀数组sa,要求构造出满足sa数组的字符串.或输出无解\(n\leq 5*10^5\) 题解 我们按照字典序来考虑每个后缀 对于\(Suffix(sa[i])\)和\(Suffix(s ...
- windwos 10 谷歌浏览器出现彩色闪条
应该是上个星期五开始,发现电脑从别的地方切换到谷歌浏览器就会出现闪条,开始也没太注意,但是到周一还是这样,所以再网上查了下, 说什么的都有,什么你按脑屏幕坏了,内存条不行什么是的.后来才发现原来是谷歌 ...
- phantomjs学习
PhantomJS快速入门 本文简要介绍了PhantomJS的相关基础知识点,主要包括PhantomJS的介绍.下载与安装.HelloWorld程序.核心模块介绍等.由于鄙人才疏学浅,难免有疏漏之处, ...
- Angular 2 ViewChild & ViewChildren
一.ViewChild ViewChild 是属性装饰器,用来从模板视图中获取匹配的元素.视图查询在 ngAfterViewInit 钩子函数调用前完成,因此在 ngAfterViewInit 钩子函 ...
- try-catch-finally中return的执行情况
在try中没有异常的情况下try.catch.finally的执行顺序 try--- finally 如果try中有异常,执行顺序是try--- catch --- finally 如果try中没有异 ...
- Thinkphp3.2 备份数据库和还原数据的方法
其实Thinkphp框架并没有自带备份数据库的功能,但是细心的朋友可能会发现Thinkphp的一套内容管理系统oneThink是有备份数据库和还原数据的功能的. 所以今天我就来聊一聊,oneThink ...