From 371a12a4fe853fc77ef2a98109a26fb8caec5e6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Thu, 28 Dec 2023 22:47:21 +0100 Subject: [PATCH] Fixed #2147 Display of empty video --- CHANGELOG.md | 2 + .../flash/tags/DefineVideoStreamTag.java | 44 +++++++++++-------- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 17aa70749..8fe4433e4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -89,6 +89,7 @@ All notable changes to this project will be documented in this file. - [#2162] AS3 switch inside foreach - [#2162] AS3 try inside foreach - [#2152] FLA Export - wrong nonlibrary shapes detection +- [#2147] Display of empty video ### Changed - [#2120] Exported assets no longer take names from assigned classes if there is more than 1 assigned class @@ -3373,6 +3374,7 @@ Major version of SWF to XML export changed to 2. [#2163]: https://www.free-decompiler.com/flash/issues/2163 [#2162]: https://www.free-decompiler.com/flash/issues/2162 [#2152]: https://www.free-decompiler.com/flash/issues/2152 +[#2147]: https://www.free-decompiler.com/flash/issues/2147 [#2120]: https://www.free-decompiler.com/flash/issues/2120 [#1130]: https://www.free-decompiler.com/flash/issues/1130 [#1220]: https://www.free-decompiler.com/flash/issues/1220 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 2bc403522..5e249740a 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 @@ -142,7 +142,7 @@ public class DefineVideoStreamTag extends DrawableTag implements BoundedTag, Tim @Internal private boolean renderingPaused = false; - + public static final int CODEC_JPEG = 1; public static final int CODEC_SORENSON_H263 = 2; public static final int CODEC_SCREEN_VIDEO = 3; @@ -277,27 +277,31 @@ public class DefineVideoStreamTag extends DrawableTag implements BoundedTag, Tim private void initPlayer() { if (mediaPlayer != null) { // && !mediaPlayer.isFinished()) { return; - } - mediaPlayer = new SimpleMediaPlayer(); - players.add(mediaPlayer); - mediaPlayer.addFrameListener(new FrameListener() { - @Override - public void newFrameRecieved(BufferedImage image) { - synchronized (getFrameLock) { - activeFrame = image; - //System.out.println("received frame"); - getFrameLock.notifyAll(); - /*if (mediaPlayer.isFinished()) { - mediaPlayer.rewind(); - }*/ - } - } - }); + } MovieExporter exp = new MovieExporter(); try { byte[] data = exp.exportMovie(this, MovieExportMode.FLV, true); + if (data.length == 0) { + return; + } File tempFile = File.createTempFile("ffdec_video", ".flv"); Helper.writeFile(tempFile.getAbsolutePath(), data); + + mediaPlayer = new SimpleMediaPlayer(); + players.add(mediaPlayer); + mediaPlayer.addFrameListener(new FrameListener() { + @Override + public void newFrameRecieved(BufferedImage image) { + synchronized (getFrameLock) { + activeFrame = image; + //System.out.println("received frame"); + getFrameLock.notifyAll(); + /*if (mediaPlayer.isFinished()) { + mediaPlayer.rewind(); + }*/ + } + } + }); mediaPlayer.play(tempFile.getAbsolutePath()); tempFiles.add(tempFile); //mediaPlayer.pause(); @@ -331,7 +335,7 @@ public class DefineVideoStreamTag extends DrawableTag implements BoundedTag, Tim @Override public synchronized void toImage(int frame, int time, int ratio, RenderContext renderContext, SerializableImage image, SerializableImage fullImage, boolean isClip, Matrix transformation, Matrix prevTransformation, Matrix absoluteTransformation, Matrix fullTransformation, ColorTransform colorTransform, double unzoom, boolean sameImage, ExportRectangle viewRect, boolean scaleStrokes, int drawMode, int blendMode, boolean canUseSmoothing) { - + if (renderingPaused || !SimpleMediaPlayer.isAvailable()) { Graphics2D g = (Graphics2D) image.getBufferedImage().getGraphics(); Matrix mat = transformation; @@ -366,6 +370,10 @@ public class DefineVideoStreamTag extends DrawableTag implements BoundedTag, Tim synchronized (DefineVideoStreamTag.class) { if (!(activeFrame != null && lastFrame == f)) { initPlayer(); + + if (mediaPlayer == null) { + return; + } float oneFr = 0; //1f / (getNumFrames() + 2);