近期由于在做一个关于视频播放的项目,需要使用程序自动获取视频文件的缩略图,特写此文供其他人参考,有不清楚之楚可以给我留言。

1、使用工具:ffmpeg,

官网下载地址:http://ffmpeg.org/download.html

我的电脑使用的是mac,安装也比较简单,参考下面的文章:

http://webmedia.blog.163.com/blog/static/416695020123261226695/

http://blog.chinaunix.net/uid-16974460-id-295979.html

下面给出linux系统安装示例:

yum -y install yasm
tar -jxvf ffmpeg-2.7.2.tar.bz2
cd ffmpeg-2.7.2
./configure --enable-shared --prefix=/usr/local/ffmpeg
make
make install
cd /usr/local/ffmpeg

vi /etc/ld.so.conf.d/ffmpeg.conf(写入:/usr/local/ffmpeg/lib)

ldconfig
ln -s /usr/local/ffmpeg/bin/ffmpeg /usr/local/bin/

测试:

  1. ffmpeg -i xxx.mp4 -y -f image2 -t 0.001 -s 125x125 xxx.jpg

2、配置环境变量

如果是windows,将ffmpeg命令加入到path环境变量中

如果是linux系统,则执行如下命令,

cd /usr/local/bin

ln -s /usr/local/ffmpeg/bin/ffmpeg ffmpeg

3、JAVA代码

注意:需要使用如下方式将每个参数分别添加到列表中,不能将参数与命令合在一起,不然会报命令找不到路径,我在mac上是这样的,不知道在window下会不会出现。

    1. /**
    2. * 保存视频缩略图
    3. * @throws IOException
    4. */
    5. public static void saveVideoThumbnail(String videoPath, String imagePath) throws IOException {
    6. //ffmpeg -i xxx.mp4 -y -f image2 -t 0.001 -s 125x125 xxx.jpg
    7. List<String> cmd = new java.util.ArrayList<String>();
    8. cmd.add("ffmpeg");// 视频提取工具的位置
    9. cmd.add("-i");
    10. cmd.add(videoPath);
    11. cmd.add("-y");
    12. cmd.add("-f");
    13. cmd.add("image2");
    14. cmd.add("-t");
    15. cmd.add("0.001");
    16. cmd.add("-s");
    17. cmd.add("125x125");
    18. cmd.add(imagePath);
    19. ProcessBuilder builder = new ProcessBuilder();
    20. builder.command(cmd);
    21. builder.start();
    22. }

java获取视频缩略图的更多相关文章

  1. java获取视频播第一帧

    FFMPEG 功能很强大,做视频必备的软件.大家可通过 http://ffmpeg.org/ 了解.Windows版本的软件,可通过 http://ffmpeg.zeranoe.com/builds/ ...

  2. android 获取视频缩略图终极解决方案(ffmpeg)

    http://blog.csdn.net/u010499721/article/details/50338623 前些天有个师弟(在做一个仿LinkInEyes行车记录仪的app)问我怎么获取视频缩略 ...

  3. Java获取视频的大小、时长

    前端上传视频之后,根据上传的视频文件获取视频的大小和时长 1.获取视频时长 private String ReadVideoTime(File source) { Encoder encoder = ...

  4. java获取视频的第一帧

    //------------maven配置文件--------------- <dependency> <groupId>org.bytedeco</groupId> ...

  5. java 获取视频时间

    //先将视频保存到项目生成临时文件,获取时长后删除临时文件 // 使用fastdfs进行文件上传 @RequestMapping("/uploadVideoToFast") @Re ...

  6. Java将视频转为缩略图--ffmpeg

    Java生成视频缩略图 对于上传视频生成缩略图使用的是ffmpeg进行生成的. 自己在网上找了如何进行编译ffmpeg的方法 但是感觉太复杂了 就到csdn上找到了编译好的ffmpeg文件 体会到ff ...

  7. Windows下使用ffmpeg与java实现截取视频缩略图

    [ffmpeg.exe可执行文件获取]: 网上搜索后得到编译好的ffmpeg文件,下载地址:http://download.csdn.net/source/453719 [安装]: 将下载的文件解压, ...

  8. Android之使用MediaMetadataRetriever类获取视频第一帧

    一.首先,来介绍一下MediaMetadataRetriever类,此类位于android.media包下,这里,先附上可查看此类的API地址:MediaMetadataRetriever类.大家能够 ...

  9. 通过 ffmpeg 获取视频第一帧(指定时间)图片

    最近做一个上传教学视频的方法,上传视频的同时需要上传视频缩略图,为了避免用户上传的缩略图与视频内容不符,经理要求直接从上传的视频中截图视频的某一帧作为缩略图,并给我推荐了FFMPEG.FFMPEG 功 ...

随机推荐

  1. gitbook构建文档命令

    安装node: sudo ln -s /opt/node-v8.3.9-linux-x64/bin/node /usr/local/bin/node sudo ln -s /opt/node-v8.3 ...

  2. 2016年3月12日Android学习笔记

    1. //此句不能忘,否则onFling左右滑动不起作用 mLlExamView.setLongClickable(true); mLlExamView.setOnTouchListener(new ...

  3. Java内存区域与内存溢出异常--运行时数据区

    Java与C之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”. C.C++程序开发在内存管理区域,既拥有每一个对象的“所有权”,又担负着每一个对象声明开始到终结的责任,而Java在虚拟机自动管理 ...

  4. nginx 方向代理 jenkins

    环境 10.0.0.20 Nginx 10.0.0.21 jenkins 10.0.0.20 nginx 进入到nginx目录,去除无用字段输入到conf.d/jenkins.conf 文件中 [ro ...

  5. 吐槽下intellij idea 2018.3这个版本

    众所周知Springboot的@Service,@Controller,@Component,@Repository,@Configuration都是能扫描的,这些标签功能有完全一致的也有有区别的此处 ...

  6. FastDFS安装注意事项

    配置中设定的目录必须提前创建,不会自动创建. 先启动所有tracker再启动storage,一个storage必须能连接到所有配置的tracker才会成功启动. Docker中运行fdfs必须使用ho ...

  7. 转载:Gitlab备份和恢复操作记录

    转载:Gitlab备份和恢复操作记录 包含了备份和数据恢复的操作记录,实验可行 前面已经介绍了Gitlab环境部署记录,这里简单说下Gitlab的备份和恢复操作记录: 1)Gitlab的备份目录路径设 ...

  8. windows命名管道

    命名管道是通过网络来完成进程间的通信,它屏蔽了底层的网络协议细节. 将命名管道作为一种网络编程方案时,它实际上建立了一个C/S通信体系,并在其中可靠的传输数据.命名管道服务器和客户机的区别在于:服务器 ...

  9. Android开发中遇到的问题(三)——eclipse创建android项目无法正常预览布局文件

    一.问题描述 今天使用SDK Manager将Android SDK的版本更新到了Android 5.1的版本,eclipse创建android项目时,预览activity_main.xml文件时提示 ...

  10. AngularJS中控制器继承

    本篇关注AngularJS中的控制器继承,了解属性和方法是如何被继承的. 嵌套控制器中属性是如何被继承的? ==属性值是字符串 myApp.controller("ParentCtrl&qu ...