引入文件(

  1. jave-native-win64 windows 64位系统
    jave-native-linux64 linux 64位系统
    按自己服务器系统来替换

  1. <dependency>
  2. <groupId>ws.schild</groupId>
  3. <artifactId>jave-core</artifactId>
  4. <version>2.4.6</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>ws.schild</groupId>
  8. <artifactId>jave-native-win64</artifactId>
  9. <version>2.4.6</version>
  10. </dependency>

压缩视频

  1. File source = new File("e:/视频/第八课.mp4");
  2. File target = new File("e:/视频/第八课_ys.mp4");
  3. long time = System.currentTimeMillis();
  4. try {
  5. MultimediaObject object = new MultimediaObject(source);
  6. AudioInfo audioInfo = object.getInfo().getAudio();
  7. AudioAttributes audio = new AudioAttributes();
  8. audio.setCodec("libmp3lame");
  9. if(audioInfo.getBitRate() > 128000){
  10. audio.setBitRate(new Integer(128000));
  11. }
  12. audio.setChannels(audioInfo.getChannels());
  13. if(audioInfo.getSamplingRate() > 48050){
  14. audio.setSamplingRate(new Integer(48050));
  15. }
  16. VideoInfo videoInfo = object.getInfo().getVideo();
  17. VideoAttributes video = new VideoAttributes();
  18. video.setCodec("h264");
  19. if(videoInfo.getBitRate() > 800000){
  20. video.setBitRate(new Integer(800000));
  21. }
  22. if(videoInfo.getFrameRate() > 20){
  23. video.setFrameRate(new Integer(20));
  24. }
  25. int width = videoInfo.getSize().getWidth();
  26. int height = videoInfo.getSize().getHeight();
  27. if(width > 1280){
  28. float rat = (float) width / 1280;
  29. video.setSize(new VideoSize(1280,(int)(height/rat)));
  30. }
  31. EncodingAttributes attr = new EncodingAttributes();
  32. attr.setFormat("mp4");
  33. attr.setAudioAttributes(audio);
  34. attr.setVideoAttributes(video);
  35. Encoder encoder = new Encoder();
  36. encoder.encode(object, target, attr);
  37. System.out.println("耗时:" + (System.currentTimeMillis() - time)/1000);
  38. } catch (Exception e) {
  39. e.printStackTrace();
  40. }

获取视频某个帧的图片

  1. long times = System.currentTimeMillis();
  2. File source = new File("e:/视频/第八课_ys.mp4");
  3. File target = new File("e:/视频/第八课_ys.png");
  4. MultimediaObject object = new MultimediaObject(source);
  5. try {
  6. VideoInfo videoInfo = object.getInfo().getVideo();
  7. VideoAttributes video = new VideoAttributes();
  8. video.setCodec("png");
  9. video.setSize(videoInfo.getSize());
  10. EncodingAttributes attrs = new EncodingAttributes();
  11. attrs.setFormat("image2");
  12. attrs.setOffset(3f);//设置偏移位置,即开始转码位置(3秒)
  13. attrs.setDuration(0.01f);//设置转码持续时间(1秒)
  14. attrs.setVideoAttributes(video);
  15. Encoder encoder = new Encoder();
  16. encoder.encode(object,target,attrs);
  17. } catch (EncoderException e) {
  18. e.printStackTrace();
  19. }
  20. System.out.println("耗时:"+(System.currentTimeMillis() - times));

jave (java的ffmpeg框架)简单使用的更多相关文章

  1. Java使用FFmpeg处理视频文件指南

    Java使用FFmpeg处理视频文件指南 本文主要讲述如何使用Java + FFmpeg实现对视频文件的信息提取.码率压缩.分辨率转换等功能: 之前在网上浏览了一大圈Java使用FFmpeg处理音视频 ...

  2. Java使用FFmpeg处理视频文件的方法教程

    这篇文章主要给大家介绍了关于Java使用FFmpeg处理视频文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧 前言 本文主要 ...

  3. 9个基于Java的搜索引擎框架

    在这个信息相当繁杂的互联网时代,我们已经学会了如何利用搜索引擎这个强大的利器来找寻目标信息,比如你会在Google上搜索情人节如何讨女朋友欢心,你也会在百度上寻找正规的整容医疗机构(尽管有很大一部分广 ...

  4. cache4j轻量级java内存缓存框架,实现FIFO、LRU、TwoQueues缓存模型

    简介 cache4j是一款轻量级java内存缓存框架,实现FIFO.LRU.TwoQueues缓存模型,使用非常方便. cache4j为java开发者提供一种更加轻便的内存缓存方案,杀鸡焉用EhCac ...

  5. Hibernate框架简单应用

    Hibernate框架简单应用 Hibernate的核心组件在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层.它通过配置文件(hibernate.proper ...

  6. 5个强大的Java分布式缓存框架推荐

    在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没有选择更优的 缓存策略,那么到时候重构起来将会是一个噩梦.本文主要是分享了 ...

  7. java的集合框架最全详解

    java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...

  8. venus java高并发框架

    http://www.iteye.com/topic/1118484 因为有 netty.mima等远程框架.包括spring jboss等remoting框架 和阿里的dubbo相比, 没有亮点.. ...

  9. Java日志系统框架的设计与实现

    推荐一篇好的文章介绍java日志系统框架的设计的文章:http://soft.chinabyte.com/database/438/11321938.shtml 文章内容总结: 日志系统对跟踪调试.程 ...

随机推荐

  1. Spring Boot2.0之整合多数据源

    一般公司分两个数据库: 一个放共同配置文件, 一个数据库垂直业务数据库 垂直拆分和水平拆分: 垂直是根据业务划分具体数据库 在一个项目中有多个数据源(不同库jdbc) 无限个的哈~ 根据包名 或者 注 ...

  2. 点分治Day2 动态树分治

    蒟蒻Ez3real冬令营爆炸之后滚回来更新blog... 我们看一道题 bzoj3924 ZJOI2015D1T1 幻想乡战略游戏 给一棵$n$个点的树$(n \leqslant 150000)$ 点 ...

  3. HiHoCoder1671 : 反转子串([Offer收割]编程练习赛41)(占位)

    描述 给定一个只包含括号和小写字母的字符串S,例如S="a(bc(de)fg)hijk". 其中括号表示将里面的字符串翻转.(注意括号可能嵌套) 请你输出翻转之后的字符串. 输入 ...

  4. liunx让命令窗口显示段路径的方法

    平时我们使用linux终端命令行的时候,常常会被一个问题困扰,那就是文件路径过长,有时候甚至超过了一行,这样看起来非常别扭,其实只要两步就可以解决这个问题: 1,修改.bashrc文件(用户根目录下) ...

  5. bzoj 4319: Suffix reconstruction 后缀数组+构造

    题目大意 给定后缀数组sa,要求构造出满足sa数组的字符串.或输出无解\(n\leq 5*10^5\) 题解 我们按照字典序来考虑每个后缀 对于\(Suffix(sa[i])\)和\(Suffix(s ...

  6. windwos 10 谷歌浏览器出现彩色闪条

    应该是上个星期五开始,发现电脑从别的地方切换到谷歌浏览器就会出现闪条,开始也没太注意,但是到周一还是这样,所以再网上查了下, 说什么的都有,什么你按脑屏幕坏了,内存条不行什么是的.后来才发现原来是谷歌 ...

  7. phantomjs学习

    PhantomJS快速入门 本文简要介绍了PhantomJS的相关基础知识点,主要包括PhantomJS的介绍.下载与安装.HelloWorld程序.核心模块介绍等.由于鄙人才疏学浅,难免有疏漏之处, ...

  8. Angular 2 ViewChild & ViewChildren

    一.ViewChild ViewChild 是属性装饰器,用来从模板视图中获取匹配的元素.视图查询在 ngAfterViewInit 钩子函数调用前完成,因此在 ngAfterViewInit 钩子函 ...

  9. try-catch-finally中return的执行情况

    在try中没有异常的情况下try.catch.finally的执行顺序 try--- finally 如果try中有异常,执行顺序是try--- catch --- finally 如果try中没有异 ...

  10. Thinkphp3.2 备份数据库和还原数据的方法

    其实Thinkphp框架并没有自带备份数据库的功能,但是细心的朋友可能会发现Thinkphp的一套内容管理系统oneThink是有备份数据库和还原数据的功能的. 所以今天我就来聊一聊,oneThink ...