From e0e7a822928c893cc4a5cc5db36b47c0b7c516e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Mon, 5 Dec 2022 20:31:01 +0100 Subject: [PATCH] Properly clear video temp files on exit --- .../flash/tags/DefineVideoStreamTag.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineVideoStreamTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineVideoStreamTag.java index da913f9c7..ea2d874a5 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineVideoStreamTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineVideoStreamTag.java @@ -121,6 +121,9 @@ public class DefineVideoStreamTag extends DrawableTag implements BoundedTag, Tim @Internal private Map frames; + + private static final List players = new ArrayList<>(); + private static List tempFiles = new ArrayList<>(); public static final int CODEC_SORENSON_H263 = 2; @@ -130,6 +133,21 @@ public class DefineVideoStreamTag extends DrawableTag implements BoundedTag, Tim public static final int CODEC_VP6_ALPHA = 5; + static { + Runtime.getRuntime().addShutdownHook(new Thread(){ + @Override + public void run() { + for (SimpleMediaPlayer p:players) { + p.stop(); + } + for (File f:tempFiles) { + f.delete(); + } + } + + }); + } + /** * Constructor * @@ -212,6 +230,7 @@ public class DefineVideoStreamTag extends DrawableTag implements BoundedTag, Tim return; } mediaPlayer = new SimpleMediaPlayer(); + players.add(mediaPlayer); mediaPlayer.addFrameListener(new FrameListener() { @Override public void newFrameRecieved(BufferedImage image) { @@ -229,9 +248,9 @@ public class DefineVideoStreamTag extends DrawableTag implements BoundedTag, Tim try { byte[] data = exp.exportMovie(this, MovieExportMode.FLV, true); File tempFile = File.createTempFile("ffdec_video", ".flv"); - tempFile.deleteOnExit(); Helper.writeFile(tempFile.getAbsolutePath(), data); mediaPlayer.play(tempFile.getAbsolutePath()); + tempFiles.add(tempFile); //mediaPlayer.pause(); } catch (IOException ex) {