資源簡介
利用VLC開源庫封裝服務(wù)器程序可用jar包,實現(xiàn)功能如下:
1.讀取視頻文件屬性信息輸出對象,包含屬性:文件格式、視頻編碼、視頻碼率、視頻分辨率、視頻幀率、音頻編碼、音頻采樣率

代碼片段和文件信息
package?info;
import?java.awt.Dimension;
import?java.awt.Graphics;
import?java.awt.Graphics2D;
import?java.awt.image.BufferedImage;
import?java.io.File;
import?java.util.ArrayList;
import?java.util.List;
import?javax.imageio.ImageIO;
import?javax.swing.Jframe;
import?javax.swing.JPanel;
import?com.sun.jna.Native;
import?com.sun.jna.NativeLibrary;
import?uk.co.caprica.vlcj.binding.LibVlc;
import?uk.co.caprica.vlcj.discovery.NativeDiscovery;
import?uk.co.caprica.vlcj.player.MediaPlayer;
import?uk.co.caprica.vlcj.player.MediaPlayerEventAdapter;
import?uk.co.caprica.vlcj.player.MediaPlayerFactory;
import?uk.co.caprica.vlcj.runtime.RuntimeUtil;
/**
?*?所屬包:test
?*?類名:SnapshotTest
?*?-------------------
?*?描述:預(yù)設(shè)幀數(shù),抽取截圖
?*?-------------------
?*?日期:2018年11月22日
?*?作者:cuixin
?*/
public?class?SnapshotUtil?{
public?String?getSnapshot(String?path)?throws?Exception?{
NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName()?“F://VLC“);
Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName()?LibVlc.class);
@SuppressWarnings(“unused“)
boolean?discover?=?new?NativeDiscovery().discover();
List?listBar?=?new?ArrayList();
listBar.add(0.20f);
listBar.add(0.50f);
listBar.add(0.70f);
listBar.add(0.90f);
MediaPlayerFactory?factory?=?new?MediaPlayerFactory();
MediaPlayer?mediaPlayer?=?factory.newembeddedMediaPlayer();
mediaPlayer.addMediaPlayerEventListener(new?MediaPlayerEventAdapter()?{
@Override
public?void?snapshotTaken(MediaPlayer?mediaPlayer?String?filename)?{
System.out.println(“截取的快照:+(filename=“?+?filename?+?“)“);
}
});
mediaPlayer.startMedia(path);
for?(Float?float1?:?listBar)?{
mediaPlayer.setPosition(float1);
Thread.sleep(1000);
File?file3?=?new?File((int)?(float1?*?100)?+?“.png“);
file3.deleteOnExit();
mediaPlayer.saveSnapshot(file3);
BufferedImage?image3?=?ImageIO.read(file3);
show(“截屏“?image3?3);
}
mediaPlayer.stop();
return?path;
}
@SuppressWarnings(“serial“)
private?static?void?show(String?title?final?BufferedImage?img?int?i)?{
Jframe?f?=?new?Jframe(title);
f.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
f.setContentPane(new?JPanel()?{
@Override
protected?void?paintChildren(Graphics?g)?{
Graphics2D?g2?=?(Graphics2D)?g;
g2.drawImage(img?null?0?0);
}
@Override
public?Dimension?getPreferredSize()?{
return?new?Dimension(img.getWidth()?img.getHeight());
}
});
f.pack();
f.setLocation(50?+?(i?*?50)?50?+?(i?*?50));
f.setVisible(true);
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2613??2018-12-06?16:35??info\SnapshotUtil.java
?????文件????????776??2018-12-10?10:54??info\Test.java
?????文件???????2316??2018-12-04?14:28??info\TheMedia.java
?????目錄??????????0??2018-12-06?16:13??info
-----------?---------??----------?-----??----
?????????????????5705????????????????????4
評論
共有 條評論