java Projekt mit Xuggler exportieren

Christopher25

Bekanntes Mitglied
Hallo Zusammen.

Ich habe ein kleines Problem mit dem Exportieren von meinem Java Projekt.
Und zwar ist dort Xuggler integriert, welche "nicht mit Maven etc." etc. sondern
einfach per jar im folgenden verzeichnis liegt "src/jar".
Die benötigten jar-Dateien sind natürlich alle im Build-Path.
Wenn ich das Programm aus Eclipse heraus starte, funktioniert alles wie es soll.
Ich habe ebenfalls, da Xuggler eine native DLL Datei verwendet unter:
Build-Path-Config. -> Library -> Xuggler.jar -> native library location den Ordner angegeben, worin sich die DLL Datei befindet.

Ich exportiere das Projekt folgendermaßen:
JavaProjekt-Rechtsklick -> Export -> RunnableJar -> Extract required Jars (Natürlich mit ausführbarer MainKlasse etc.) -> Finish

Das Programm startet auch, ich lasse eine JOptionPane.showMessage(...) starten welche auch angezeigt wird, aber sobald ich in die Klasse reinkomme, wo Xuggler etwas machen soll, passiert nichts mehr.
Ab dort kommen auch keine weiteren JOptionPanes mehr auf.
Bei folgender Zeile scheint es zu krachen, und das liegt warscheinlich an einem Fehler im Export.
Java:
container = IContainer.make();

In dieser Methode schätze ich mal, lädt er die benötigte DLL rein, welche er irgendwie nicht finden kann!??
Was mache ich falsch?
 
Wenn ich Dich richtig verstanden habe, dann hast Du eine native DLL, welche Du in das jar gepackt hast. Meines Wissens nach kann ein System wie Windows keine native DLLs laden, die in einer ZIP oder einem JAR sind. Daher ist es meines Wissens nach notwendig, die DLL zu extrahieren und dann die DLLs zu laden.

Siehe z.B. http://stackoverflow.com/questions/1611357/how-to-make-a-jar-file-that-includes-dll-files

Mag sein, dass ich da auch irgend welche Alternativen übersehe, aber mit JNI habe ich bisher keine wirklichen Erfahrungen gemacht.
 
Also ich hab das jetzt mal so umgesetzt wie in deinem Beitrag von Stackoverflow beschrieben.
Beim Laden der DLL Datei vom System scheinen keine Fehler aufzutreten und läuft voll durch.
Leider kommt der immer noch nicht weiter als
Java:
container = IContainer.make();
.
Fehlen euch noch irgendwelche Informationen um mir zu helfen?
 
Weiß keiner etwas zur Hilfe?
Hatte niemand ein Problem damit?
Wenn nein, kann mir jemand eine Beschreibung geben, wie genau ich das mache?
Evtl. sogar mit dem Beispiel "Xuggler" ?
 
Also wenn mir hier keiner helfen kann/möchte.
Weiß denn jemand, ob es etwas ähnliches wie Xuggler gibt?
Eventuell sogar in nativen Java?
Ich poste ein Beispiel von dem, wie ich das bisher in Xuggler gelöst habe, damit ihr wisst, was auch brauche.

Java:
List<String> list = new ArrayList<String>();
        container = IContainer.make();
        FileInputStream input = new FileInputStream(source);
        try {
            if (container.open(input, null) < 0) {
                throw new IllegalArgumentException("Datei kann nicht geöffnet werden: " + source.getPath());
            }
            int position = 0;
            int numStreams = container.getNumStreams();
            for (int i = 0; i < numStreams; i++) {
                IStream stream = container.getStream(i);
                IStreamCoder coder = stream.getStreamCoder();

                if (coder.getCodecType() == ICodec.Type.CODEC_TYPE_AUDIO) {
                    if (coder.getStream().getLanguage() != null) list.add(coder.getStream().getLanguage());
                }
            }
            if (list.size() > 1) {
                ListDialog<String> dialog = new ListDialog<String>(list);
                dialog.open();
                position = dialog.getChoicePosition();
            }
            return convertToH264WithQuality(source, target, " -s hd1080 -crf 20 -map 0:v -map 0:a:" + position);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (input != null) input.close();
        }
        return false;

Also wie ihr an dem Beispiel sehen könnt, brauche ich Xuggler nur, um die Sprache aus den AudioStreams zu ziehen. Das ist der Einzige Anwendungsfall, wofür ich Xuggler brauche. Wenn jemand eine alternative weiß wäre das echt toll.

MfG,
 

Zurück
Oben