我试图找到这些视频文件的持续时间以及我可以获取的任何其他信息,因为我需要修正时间戳并进行一些时间计算,以便在时间轴上对齐来自多个摄像机的文件。
我正在使用JavaFX.Scene.Media来做到这一点。到目前为止,我拥有以下代码,但是由于“无法识别的文件签名”,我遇到了异常
public static void main(String[] args) {
final JFXPanel fxPanel = new JFXPanel();
ArrayList<Path> s = new ArrayList<Path>();
try (Stream<Path> paths = Files.walk(Paths.get(System.getProperty("user.dir")))) {
paths
.filter(Files::isRegularFile)
.filter(Files::exists)
.forEach(s::add);
}catch(Exception e){
e.printStackTrace();
}
for(Path p:s){
try {
Media m = new Media(p.toUri().toString());
MediaPlayer mediaPlayer = new MediaPlayer(m);
mediaPlayer.setOnReady(new Runnable() {
@Override
public void run() {
System.out.println("Duration: "+m.getDuration().toSeconds());
// display media's metadata
for (Map.Entry<String, Object> entry : m.getMetadata().entrySet()){
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
});
}catch(Exception e){
e.printStackTrace();
}
}
}
我的视频文件是XAVC。文件容器是MP4,视频是AVC,音频是PCM。这里似乎同时支持AVC和PCM,所以我不确定从哪里继续。 https://docs.oracle.com/javase/9/docs/api/javafx/scene/media/package-summary.html