我想对以.mp4格式存储的视频进行一些图像分析.因此,我需要一种方法来用Java获取这部电影的图像.我骂了很多,发现了像jcodec和jaad这样的库.但我无法使用这些库运行.正如我发现的那样,有一些例子(至少我没有找到)显示我的用例.
你能帮助我吗?你知道任何库可以做我需要的,至少在Win7 64位上运行.或者你知道如何使用jcodec实现这一目标吗?
非常感谢+最好的问候,安迪
编辑:
正如我写的,我用jcodec尝试过.我发现了如何获取帧的数据,但不知道如何将它变成像BufferedImage这样的东西.我希望这些数据不是简单的RGB格式,而是任何压缩格式.(我是否正确?)我不知道要解码这些数据.
您可以使用jcodec获取帧的数据,如下所示(至少据我所知):
public static void main(String[] args) throws IOException, MP4DemuxerException {
String path = "videos/video-2011-09-21-20-07-21.mp4";
MP4Demuxer demuxer1 = new MP4Demuxer(new FileInput(new File(path)));
DemuxerTrack videoTrack = demuxer1.getVideoTrack();
Packet firstFrame = videoTrack.getFrames(1);
byte[] data = firstFrame.getData();
}
Run Code Online (Sandbox Code Playgroud)
我还找到了以下内容:http://code.google.com/p/jcodec/source/browse/trunk/src/test/java/org/jcodec/containers/mp4/DitherTest.java? r = 70 但这不是使用可下载的jar-package工作(有编译错误).
谢谢你的帮助!
小智 6
您可以在我正在从视频中提取帧的 followinf 程序中使用 jcodec(http://jcodec.org/)。
/*
* To extract frames from a mp4(avc) video
*
*/
package avc_frame;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import org.jcodec.api.FrameGrab;
import org.jcodec.api.JCodecException;
public class Avc_frame {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException, JCodecException {
long time = System.currentTimeMillis();
for (int i = 50; i < 57; i++) {
BufferedImage frame = FrameGrab.getFrame(new File("/Users/jovi/Movies/test.mp4"), i);
ImageIO.write(frame, "bmp", new File("/Users/jovi/Desktop/frames/frame_"+i+".bmp"));
}
System.out.println("Time Used:" + (System.currentTimeMillis() - time)+" Milliseconds");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15630 次 |
| 最近记录: |