Show warning when opened SWF file has video tags and VLC is not available.

This commit is contained in:
Jindra Petřík
2022-12-06 07:51:43 +01:00
parent b941cbba04
commit c54217befe
7 changed files with 41 additions and 16 deletions

View File

@@ -816,7 +816,12 @@ public final class Configuration {
@ConfigurationDefaultDouble(1.0)
@ConfigurationCategory("display")
@ConfigurationName("gui.scale")
public static ConfigurationItem<Double> uiScale = null;
public static ConfigurationItem<Double> uiScale = null;
@ConfigurationDefaultBoolean(true)
@ConfigurationName("warning.video.vlc")
@ConfigurationCategory("display")
public static ConfigurationItem<Boolean> warningVideoVlc = null;
private enum OSId {
WINDOWS, OSX, UNIX

View File

@@ -1,9 +1,7 @@
package com.jpexs.video;
import com.jpexs.decompiler.flash.configuration.Configuration;
import com.jpexs.helpers.Helper;
import java.awt.image.BufferedImage;
import java.lang.annotation.Native;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
@@ -11,17 +9,7 @@ import com.sun.jna.NativeLibrary;
import com.sun.jna.Platform;
import com.sun.jna.platform.win32.Advapi32Util;
import com.sun.jna.platform.win32.WinReg;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.SwingUtilities;
import uk.co.caprica.vlcj.factory.MediaPlayerFactory;
import uk.co.caprica.vlcj.factory.discovery.NativeDiscovery;
import uk.co.caprica.vlcj.factory.discovery.provider.DirectoryProviderDiscoveryStrategy;
import uk.co.caprica.vlcj.factory.discovery.strategy.NativeDiscoveryStrategy;
import uk.co.caprica.vlcj.media.MediaRef;
import uk.co.caprica.vlcj.medialist.MediaList;
import uk.co.caprica.vlcj.medialist.MediaListRef;
@@ -33,7 +21,6 @@ import uk.co.caprica.vlcj.player.embedded.videosurface.VideoSurfaceAdapters;
import uk.co.caprica.vlcj.player.embedded.videosurface.callback.BufferFormat;
import uk.co.caprica.vlcj.player.embedded.videosurface.callback.BufferFormatCallback;
import uk.co.caprica.vlcj.player.embedded.videosurface.callback.RenderCallback;
import uk.co.caprica.vlcj.player.embedded.videosurface.callback.format.RV32BufferFormat;
import uk.co.caprica.vlcj.player.list.MediaListPlayer;
import uk.co.caprica.vlcj.player.list.MediaListPlayerEventAdapter;
import uk.co.caprica.vlcj.player.list.PlaybackMode;

View File

@@ -52,6 +52,7 @@ import com.jpexs.decompiler.flash.gui.pipes.FirstInstance;
import com.jpexs.decompiler.flash.gui.proxy.ProxyFrame;
import com.jpexs.decompiler.flash.helpers.SWFDecompilerPlugin;
import com.jpexs.decompiler.flash.tags.DefineBinaryDataTag;
import com.jpexs.decompiler.flash.tags.DefineVideoStreamTag;
import com.jpexs.decompiler.flash.tags.DoABC2Tag;
import com.jpexs.decompiler.flash.tags.FileAttributesTag;
import com.jpexs.decompiler.flash.tags.SetBackgroundColorTag;
@@ -1164,6 +1165,8 @@ public class Main {
}
result.sourceInfo = sourceInfo;
boolean hasVideoStreams = false;
for (Openable openable : result) {
openable.setOpenableList(result);
@@ -1178,7 +1181,13 @@ public class Main {
int height = (int) ((swf.displayRect.Ymax - swf.displayRect.Ymin) / SWF.unitDivisor);
logger.log(Level.INFO, "Width: {0}", width);
logger.log(Level.INFO, "Height: {0}", height);
for (Tag t: swf.getTags()) {
if (t instanceof DefineVideoStreamTag) {
hasVideoStreams = true;
}
}
swf.addEventListener(new EventListener() {
@Override
public void handleExportingEvent(String type, int index, int count, Object data) {
@@ -1224,6 +1233,16 @@ public class Main {
});
}
}
if (hasVideoStreams && !DefineVideoStreamTag.displayAvailable()) {
View.execInEventDispatchLater(new Runnable() {
@Override
public void run() {
ViewMessages.showMessageDialog(getDefaultMessagesComponent(), AppStrings.translate("message.video.installvlc").replace("%file%", sourceInfo.getFileTitleOrName()), AppStrings.translate("message.warning"), JOptionPane.WARNING_MESSAGE, Configuration.warningVideoVlc);
}
});
}
return result;
}

View File

@@ -623,3 +623,6 @@ config.description.flattenASPackages = Make one item per package instead of pack
config.name.gui.scale = UI scale factor
config.description.gui.scale = Scaling factor of graphics interface. Set this to 2.0 on Mac retina displays. Application true exit (not just restart after asking) is required.
config.name.warning.video.vlc = Warn on missing VLC
config.description.warning.video.vlc = Show warning about VLC media player required when opening SWFs with DefineVideoStream tags when VLC is not available.

View File

@@ -613,3 +613,6 @@ config.description.flattenASPackages = Zobraz\u00ed bal\u00ed\u010dky jako jednu
config.name.gui.scale = UI faktor zv\u011bt\u0161en\u00ed
config.description.gui.scale = Zv\u011bt\u0161ovac\u00ed faktor grafick\u00e9ho rozhran\u00ed. Nastavte toto na 2.0 na retina displej\u00edch na Macu. Je vy\u017eadov\u00e1no tvrd\u00e9 ukon\u010den\u00ed aplikace (nejen restart po dotazu).
config.name.warning.video.vlc = Varovat p\u0159i chyb\u011bj\u00edc\u00edm VLC
config.description.warning.video.vlc = Zobrazovat varov\u00e1n\u00ed o vy\u017eadovan\u00e9m VLC media playeru p\u0159i otev\u00edr\u00e1n\u00ed SWF s DefineVideoStream tagy kdy\u017e je VLC nedostupn\u00fd.

View File

@@ -995,3 +995,7 @@ productinfo.edition.none = None
productinfo.version = Version:
productinfo.build = Build:
productinfo.compileDate = Compilation date:
message.video.installvlc = The file "%file%" contains video tags (DefineVideoStream).\r\n\
To properly display them in the decompiler, VLC media player installed is required (minimum version 3.0.0).\r\n\
You can however still export the videos to FLV file format without it.

View File

@@ -979,4 +979,8 @@ productinfo.edition = Edice:
productinfo.edition.none = \u017d\u00e1dn\u00e1
productinfo.version = Verze:
productinfo.build = Sestaven\u00ed:
productinfo.compileDate = Datum kompilace:
productinfo.compileDate = Datum kompilace:
message.video.installvlc = Soubor "%file%" obsahuje video tagy (DefineVideoStream).\r\n\
Pro korektn\u00ed zobrazen\u00ed v dekompil\u00e1toru je vy\u017eadov\u00e1n nainstalovan\u00fd VLC media player (v minim\u00e1ln\u00ed verzi 3.0.0).\r\n\
St\u00e1le nicm\u00e9n\u011b m\u016f\u017eete exportovat videa do FLV form\u00e1tu i bez toho.