终端传送的多媒体有些需要生成缩略图以给用户更好更快速的浏览体验。
当然缩略图可以上传时生成并保存在数据库,也可以不保存并在在使用时动态生成,各有优劣。
下面是本人在Mongo+Play!+Scala中的应用
Imagescaling
包:java-image-scaling-0.8.6.jar
import org.apache.commons.io.output.ByteArrayOutputStream;
import play.Logger;
import com.mortennobel.imagescaling.DimensionConstrain;
import com.mortennobel.imagescaling.ResampleOp;
public class ImageUtil {
public static ByteArrayOutputStream scale(BufferedImage source, int width,
int length, String type) throws FileNotFoundException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
ResampleOp resampleOp = new ResampleOp(
DimensionConstrain.createMaxDimension(width, length, true));
BufferedImage rescaled = resampleOp.filter(source, null);
ImageIO.write(rescaled, type, baos);
} catch (Exception e) {
Logger.info("Create Image thumbnail fail! " + e);
}
return baos;
}
}
FFMPEG:
包:ffmpeg-2.1.tar.bz2
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class VideoUtil {
public static boolean transfer(String inFile, String outFile, int length,
int width) {
String command = "ffmpeg -i " + inFile
+ " -y -f image2 -ss 00:00:01 -t 00:00:01 -s " + length + "x"
+ width + " " + outFile;
try {
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(command);
java.io.InputStream stderr = proc.getErrorStream();
InputStreamReader isr = new InputStreamReader(stderr);
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null)
System.out.println(line);
} catch (Throwable t) {
return false;
}
return true;
}
}
FFMPEG需要环境搭建,由于Linux环境搭建中细节网上不多,这里简单罗列:
1,使用apt-get获得最新SVN
2,使用SVN获得最新FFMPEG,地址:svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
3,/configure --prefix=/usr/local/ffmpeg --enable-cross-compile --enable-shared
--enable-shared 是允许其编译产生动态库,在以后的编程中要用到这个几个动态库。--prefixFFMPEG安装目录
4,使用make,make install命令编译并安装
5,安装之后在/usr/local/ffmpeg会看到有三个目录
lib 动态链接库位置
include 编程要用到头文件
bin 执行文件所在的目录
我们可以把lib中的三个链接库libavcodec.so libavformat.so libavutil.so复制到/usr/lib下。
把include目录下的ffmpeg目录复制到/usr/include下。
执行bin目录下的ffplay,可以去播放音频或者视频文件。
例如播放1.mp3 命令为./ffplay 1.mp3
bin目录下还有两个文件:ffmpeg和ffserver
ffmpeg是一个很好的视频和音频的格式转化工具
如果不想生成ffserver,只要在./configure的时候加--disable-ffserver即可。
相关推荐
首先,ffmpeg是一个强大的命令行工具,它支持多种视频、音频格式的处理,包括转换、合并、剪辑以及生成缩略图等。在Java中使用ffmpeg,通常会通过调用系统命令或者使用第三方库如`Xuggle`或`ffmpeg-java`来实现。在...
ffmpeg是一个强大的跨平台工具,能够处理各种视频格式,并能轻松提取出缩略图。 7. **应用场景**:视频缩略图广泛应用于各种场景,如社交媒体上的视频分享、视频网站的推荐列表、在线教育平台的课程介绍等。 8. **...
总之,FFmpeg作为一个强大的多媒体处理工具,不仅能够方便地截取视频缩略图,还能完成各种复杂的音视频处理任务,是IT行业中处理多媒体数据不可或缺的利器。通过学习和熟练掌握FFmpeg,我们可以提高工作效率,满足...
总结来说,这个PHP类提供了便捷的接口,让我们能够利用FFmpeg的强大功能,无需深入理解底层的视频处理技术,就可以在PHP项目中轻松实现视频转换、截图和生成缩略图。对于需要处理多媒体内容的Web应用程序,这无疑是...
这里,`-i input.mp4` 指定了输入的视频文件,`-vf` 后的参数用于设置过滤器,`select='eq(n,0)'` 表示选择第一个帧作为缩略图,`setpts=1/TB` 是时间戳设置,确保输出的图片与视频同步,`-vframes 1` 指定只输出一...
总的来说,FFmpeg提供了一个灵活且功能强大的接口来生成视频缩略图,无论你是哪种编程语言的开发者,都可以通过调用系统命令或者封装库来利用FFmpeg的强大功能。记得在实际应用中,确保对用户输入进行安全检查,防止...
首先,Java本身并不直接支持从视频文件中提取缩略图,但可以通过第三方库如JMF(Java Media Framework)或FFmpeg来实现。不过,JMF已经较为过时,目前更推荐使用FFmpeg库,它是一个强大的多媒体处理工具,提供了跨...
ffmpeg -framerate 0.05 -f image2 -loop 1 -y -i d:/img/img%d.jpg -i d:/img/gyz.mp3 -s 1080*1920 -r 25 -t 100 d:/img/output.mp4 -framerate 速率,越小每张图片停留时间越长 -loop 循环一遍文件夹内的图片 -i ...
Java 使用 FFmpeg 截取视频图片是一个常见的任务,它涉及到多媒体处理、命令行操作和跨平台编程。FFmpeg 是一个强大的开源工具集,用于处理音频和视频文件,包括编码、解码、转码、流处理等功能。在 Java 中,我们...
FFmpeg是一款强大的开源多媒体处理工具,它包含了音视频编解码、封装、转换以及流媒体服务等多种功能。在Android平台上,FFmpeg也被广泛应用于音视频处理任务,如视频转码、截图、音频提取等。本话题主要围绕如何...
在Java编程中,生成视频的缩略图是一项常见的任务,特别是在多媒体处理或视频分享平台的开发中。这个实例主要关注如何使用Java在指定的时间点截取视频生成图片。以下是一些相关的知识点: 1. **Java Media ...
本源码是ffmpeg转换视频,编译环境为vs2017,如需要转换其他格式视频填写对应的视频格式的编码格式【-f image2 -i c:\temp\d.jpg -vcodec libx264 test.mp4】,支持的图片格式为jpg,bmp,tiff等等。请注意对应的...
在Java后台开发中,有时我们需要处理视频相关的任务,例如从视频中截取特定帧作为图片。这通常涉及到使用外部工具,比如FFmpeg,一个强大的开源跨平台多媒体处理库。本教程将详细介绍如何在Java环境中利用FFmpeg库...
在Linux环境中,利用Java调用FFmpeg命令进行视频截图是一项常见的任务,特别是在多媒体处理和视频分析的项目中。FFmpeg是一款强大的开源工具,它提供了多种音视频处理功能,包括编码、解码、转换、流处理等。在这个...
在音视频处理领域,Qt 和 FFmpeg 是两个非常重要的工具。Qt 是一个跨平台的 C++ 库,常用于创建图形用户界面,而 FFmpeg 是一个强大的开源多媒体处理框架,支持音频、视频的编码、解码、转换等功能。本篇文章将深入...
在IT行业中,视频转码和图片缩略图是两个关键的技术领域,它们广泛应用于多媒体处理、网络流媒体、社交媒体和网站优化等方面。 视频转码,简单来说,就是将原始视频文件转换成不同的格式或分辨率,以适应不同的播放...
在IT行业中,尤其是在开发视频网站或者处理多媒体内容时,截取视频缩略图是一项非常重要的功能。这不仅可以为用户提供预览,帮助他们快速了解视频内容,同时也可以优化用户体验,提高平台的吸引力。在这个场景下,...
FFmpeg是一款强大的开源跨平台多媒体处理工具,广泛用于音频、视频的编码、解码、转换、流媒体处理等任务。在“最简单的利用ffmpeg获取视频的图片”这一场景中,我们将探讨如何通过FFmpeg库从视频中提取帧并保存为...
C# 视频转图片 在 C# 中将视频转换为图像可以使用 FFmpeg 库(非源码) 具体见: https://blog.csdn.net/djk8888/article/details/136503921?spm=1001.2014.3001.5501
FFmpeg库提供了丰富的API,使得开发者可以方便地自定义处理流程,包括提取视频的关键帧作为缩略图。 1. FFmpeg基本概念: - 缩略图:视频预览图,通常由视频中的某一帧生成,用于快速展示视频内容。 -关键帧(I帧...