我將視頻存儲在硬盤中並將其鏈接存儲在數據庫中,因爲我發現這是視頻存儲在數據庫中的解決方案。 現在我需要檢索每個video.so的縮略圖圖像我怎樣才能得到在Java中使用ffmpeg視頻(MJPEG格式)的縮略圖圖像。如何獲得縮略圖在java中的視頻(格式MJPEG)的圖像
我不知道也許我找不到合適的關鍵字。
的PS:我使用Eclipse IDE和實現的Java Swing所需的接口
我將視頻存儲在硬盤中並將其鏈接存儲在數據庫中,因爲我發現這是視頻存儲在數據庫中的解決方案。 現在我需要檢索每個video.so的縮略圖圖像我怎樣才能得到在Java中使用ffmpeg視頻(MJPEG格式)的縮略圖圖像。如何獲得縮略圖在java中的視頻(格式MJPEG)的圖像
我不知道也許我找不到合適的關鍵字。
的PS:我使用Eclipse IDE和實現的Java Swing所需的接口
您可以使用xuggle它易於使用,具有樣本這樣做。
但是,它已被棄用。您可能想要檢查謙虛的視頻。
我已經使用了xuggle,它支持大量的視頻格式。
它適用於主要操作系統,無需安裝任何東西。
在谷歌搜索。
感謝您的答覆..可以請您分享代碼..這可能會幫助我.. – Shaista 2015-03-19 11:01:37
@Salivan xuggle下載不起作用。你能建議任何鏈接下載? – 2016-08-31 04:18:01
在這裏您可以找到庫和示例代碼。但是,這取決於你想要在哪個框架上拍攝縮略圖。
玩這個代碼,找出你的需求:
/**
*
* @author Pasban
*/
import com.xuggle.xuggler.ICodec;
import com.xuggle.xuggler.IContainer;
import com.xuggle.xuggler.IPacket;
import com.xuggle.xuggler.IStream;
import com.xuggle.xuggler.IStreamCoder;
import com.xuggle.xuggler.IVideoPicture;
import com.xuggle.xuggler.video.ConverterFactory;
import com.xuggle.xuggler.video.IConverter;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class VideoThumbnail extends JDialog {
private Image image;
public static void main(String[] args) {
final VideoThumbnail merge = new VideoThumbnail();
Thread thread = new Thread() {
@Override
public void run() {
merge.perform("y:/a.mp4", "y:/thumb.a.png");
merge.setVisible(false);
System.exit(0);
}
};
thread.run();
}
public void perform(String path_video, String filename) {
IContainer container = IContainer.make();
// check if file is readable
if (container.open(path_video, IContainer.Type.READ, null) < 0) {
throw new IllegalArgumentException("Can't find " + path_video);
}
// read video file and create stream
double fRate = 0;
IStreamCoder coderVideo = null;
for (int i = 0; i < container.getNumStreams(); i++) {
IStream stream = container.getStream(i);
IStreamCoder coder = stream.getStreamCoder();
if (coder.getCodecType() == ICodec.Type.CODEC_TYPE_VIDEO) {
coderVideo = coder;
fRate = coderVideo.getFrameRate().getDouble();
break;
}
}
if (coderVideo == null || coderVideo.open(null, null) < 0) {
throw new RuntimeException("Can't open video coder");
}
int width = coderVideo.getWidth();
int height = coderVideo.getHeight();
this.setSize(width, height);
this.setLocationRelativeTo(null);
this.setVisible(true);
IPacket packet = IPacket.make();
int after_this_frame = 60; // or 60 * fRate to have your time in Seconds (here it will be 60*fRate = 1mins)
while (container.readNextPacket(packet) >= 0) {
// video packet
IVideoPicture picture = IVideoPicture.make(coderVideo.getPixelType(), width, height);
coderVideo.decodeVideo(picture, packet, 0);
if (picture.isComplete()) {
IConverter converter = ConverterFactory.createConverter(ConverterFactory.XUGGLER_BGR_24, picture);
BufferedImage bi = converter.toImage(picture);
try {
after_this_frame--;
if (after_this_frame == 0) {
ImageIO.write(bi, "png", new File(filename));
break;
}
} catch (IOException ex) {
ex.printStackTrace();
}
this.setImage(bi);
// break from this loop if you are happy with the first frame.
//break;
}
}
coderVideo.close();
container.close();
}
public VideoThumbnail() {
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
public void setImage(final Image image) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
VideoThumbnail.this.image = image;
repaint();
}
});
}
@Override
public synchronized void paint(Graphics g) {
if (image != null) {
g.drawImage(image, 0, 0, null);
}
}
}
對於來自Xuggle更多的樣本,
https://github.com/artclarke/xuggle-xuggler/tree/master/src/com/xuggle/mediatool/demos
xuggle下載不起作用。你能建議任何鏈接下載? – 2016-08-31 04:18:30
我將我的舊jar文件上傳到此GoogleDrive公用文件夾。 ** ** https://drive.google.com/folderview?id=0BzPg_acW3VmsYTZWbGcxdjdSdmc&usp=sharing 如果我這個打破任何版權法,請讓我知道刪除它,所以我會被起訴的安全: P – Soley 2016-09-01 15:53:58
[視頻縮略圖的Java(http://stackoverflow.com/questions/48179/video-thumbnails-in-java) – 2015-03-19 10:58:22
@NeerajJain是的,我想這樣做..但我怎樣才能得到與視頻有關的圖像..其實我需要縮略圖來表示那個視頻。 – Shaista 2015-03-19 11:00:04
@NeerajJain謝謝你 – Shaista 2015-03-19 11:12:35