资源简介
利用VLC开源库封装服务器程序可用jar包,实现功能如下:
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
* -------------------
* 描述:预设帧数,抽取截图
* -------------------
* 日期: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
评论
共有 条评论