Я пытаюсь определить длительность этих видеофайлов, а также любую другую информацию, которую я могу получить, потому что мне нужно исправить временные метки и выполнить некоторый расчет времени для выравнивания файлов с нескольких камер на временной шкале.
Я работаю с 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