java生成视频缩略图

/**
 * @author yucl80@163.com
 *
 */


import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.io.File;


import javax.imageio.ImageIO;


import com.github.hoary.javaav.Demuxer;
import com.github.hoary.javaav.Image;
import com.github.hoary.javaav.MediaFrame;
import com.github.hoary.javaav.VideoFrame;


public class CameraExample {


static boolean reading = true;


public static void main(String[] args) throws Exception {
String video = "/tmp/Rational.mp4";
Demuxer demuxer = new Demuxer();
demuxer.open(video);


MediaFrame mediaFrame;
mediaFrame = demuxer.readFrame();


while (reading && (mediaFrame = demuxer.readFrame()) != null) {
if (mediaFrame.getType() == MediaFrame.Type.VIDEO) {
VideoFrame videoFrame = (VideoFrame) mediaFrame;
BufferedImage image = Image.createImage(videoFrame, BufferedImage.TYPE_3BYTE_BGR);
image = resizeImage(image,100,100);
ImageIO.write(image, "jpg", new File("/tmp/a.jpg"));
                break;
}
if (mediaFrame.getType() == MediaFrame.Type.AUDIO) {

}
}


demuxer.close();


}

public static BufferedImage resizeImage(final BufferedImage bufferedimage,
            final int width, final int height) {
double Ratio = 0.0; 
java.awt.Image itemp = bufferedimage.getScaledInstance(width, height, BufferedImage.SCALE_SMOOTH); 
        if ((bufferedimage.getHeight() > width) || (bufferedimage.getWidth() > height)) {  
            if (bufferedimage.getHeight() > bufferedimage.getWidth())  
                Ratio = (double)width / bufferedimage.getHeight();  
            else  
                Ratio = (double)height / bufferedimage.getWidth();  
        }  
        AffineTransformOp op = new AffineTransformOp(AffineTransform  
                .getScaleInstance(Ratio, Ratio), null);  
        itemp = op.filter(bufferedimage, null);          
        return (BufferedImage) itemp;
    }


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值