Video DVD unter Linux erstellen

  • Hi,


    bin noch etwas unerfahren unter Linux und möchte mir eine Video DVD brennen. Audio_TS und Video_TS sind bereits vorhanden. Habe SUSE Linx 9.2 Pro und bekomme eine Fehlermeldung, wenn 80% der DVD unter K3B geschrieben sind.
    Habe K3B Version 0.11.15cvs
    Growisofs Version 5.21 mit Flag "-dvd-compat"
    mkisofs Version 2.1 mit Flag "-dvd-video"


    Würde mich freune, wenn mir jemand helfen kann.


    Danke


    Muenchn_er

  • Hi,


    fü alles unten gilt:


    Der DVD-Brenner ist im Beispiel /dev/dvdrecorder
    Die VideoDVD-Daten liegen unter /tmp/dvd



    DVDs sind gar nicht so schwer zu brennen. :)


    Wichtigstes zuerst: Dein Brenner muß unbedingt im DMA-Modus laufen. Sonst kann das Brennen auch trotz Burnproof abbrechen. testen mit:


    hdparm -d /dev/dvdrecorder
    (als root)
    sollte sowas ergeben:
    ###################################
    teddy:~ # hdparm -d /dev/dvdrecorder


    /dev/dvdrecorder:
    using_dma = 1 (on)
    ###################################
    Wenn da eine 0 steht, dann mit


    hdparm -d 1 /dev/dvdrecorder


    einschalten. Das hält aber nur bis zum nächsten Systemstart. Fest trägst Du das in yast bei DMA-Modus ein.


    Wenn Du die Verzeichnisse VIDEO_TS und AUDIO_TS hast, dann sollte erstmal alles soweit in Ordnung sein. Spätestens beim Brennen sagt er Dir dann obs so ist oder nicht. Vergiß ansonsten einfach k3b, das könnte schonmal der Fehler sien, bzw. wüßte ich eh nicht, wo man damit eine gültige Video-DVD erstellen kann, dazu müssen nämlich die Dateien auf der DVD in einer bestimmten Reihenfolge geschrieben werden. Nimm einfach die Kommadozeile, das geht sicherer. Zuerst guchst Du ob die Dateien nicht einfach zuviel für eine DVD sind:


    du -sh /tmp/dvd


    (da sind z.B. Deine zwei Verzeichnisse VIDEO-TS und AUDIO_TS)
    Das sollte nicht mehr als 4,3G ergeben. Wenn doch, dann hast Du möglicherweise einen sehr langen Film, oder in den Verzeichnissen war schon vorher was drin, von einem fehlgeschlagenen Authoringversuch vielleicht.
    Wenn alles in Ordnung ist:


    growisofs -Z /dev/dvdrecorder -dvd-video /tmp/dvd/


    Das macht sowohl das DVD-Image on the fly als auch das Brennen. Jetzt mußt Du die DVD nur noch im Player testen. :)
    Für den Anfang solltest Du DVD+-RWs nehmen, man macht immer mal Fehler. Wenns dann alles stimmt halt ne R rein und nochmal brennen.


    So geht alles eigentlich problemlos, und man kann nebenher surfen oder so. :)


    Viele Gruesse

  • Hi,
    die Beschreibung von computerteddy ist sicher gut, aber ich denke mal das ein Einsteiger nicht viel damit Anfangen kann.
    Bevor man sich mit andere Dinge unter Linux beschäftigt, sollte man erst das System selbst kennenlernen. Wenn man das einigermaßen verstanden hat (Prinzip, Abläufe) kann wird der Rest auch nicht mehr so schwer sein. Es gibt zahlreiche Tools für Dvd Brennen usw., aber ohne etwas vorkenntnissen wird es sehr schwer sein dies anzuwenden.
    Viel lesen und testen, dann hat man eine Chance. :winking_face:

    Gruß
    Mister 2m


    Linux 10.1 user...................

  • also bei Dreambox-Streams verwende ich eine ganz einfache Methode:


    mit ProjectX laden
    und als mpv speichern/umwandeln lassen(ist dann ein ganz normales mpeg2-Video)


    DVDStyler aufrufen
    (gibts schon als SuSE-rpm von packmanDVDStyler)
    DVD-Menüs usw. erstellen
    ISO erstellen lassen und mit liebstem Programm brennen
    (oder gleich DVDStyler brennen lassen)

  • Ich bekomme leider Projectx unter Suse 9.2 nicht zum laufen :frowning_face:
    Ich bekomme immer folgende Fehlermeldung beim Aufruf von java -jar projectx.jar
    Exception in thread "main" java.lang.NoClassDefFoundError: net/sourceforge/dvb/projectx/common/X
    Gibt es irgendwo eine Anleitung, wie man unter Suse 9.2 Projectx zum laufen bekommt?

  • Hallo,


    Das must du da selbst kompilieren, kannst also nicht
    das aus der Database nehemen...



    Das Support forum für ProfektX ist folgendes:


    http://forum.dvbtechnics.info/

    MfG EgLe :]

    Linux will Benutzer, die Linux wollen. Linux ist nicht Windows


    Kernel : 5.4.2-1-MANJARO LTS
    GUI : KDE 5.64.0 / Plasma 5.17.4
    Machine : Intel NUC8i7HVK
    Graphics : Radeon RX Vega M GH
    CPU : Intel Core i7-8809G @ 8x 4.2GHz
    RAM : Gskill F4-3000C16S-16GRS Speicherkarte so D4 3000 16GB C16 Rip

  • selbst kompiliert bzw die build.sh habe ich ausgeführt, am Ende soll ja Projectx schon starten aber da erscheint die Fehlermeldung schon, die auch beim manuellen Aufruf wie oben beschrieben kommt. Da die Original build.sh bei mir überhaupt nichts macht habe ich eine abgeänderte aus dem oben genannten Forum genommen, die angeblich geht. Hier mal deren Inhalt.


    Bash
    #!/bin/sh
    #build.sh
    rm -f ProjectX.jar
    perl -pe 's|\\|/|g' sources.lst > sources-linux.lst
    mkdir -p build
    javac -O -d build @sources-linux.lst
    cp resources/*.* build
    jar cfvm projectx.jar MANIFEST.MF -C build .
    #start von projectx
    java -jar projectx.jar
  • vergiss einfach den ganzen firlefanz, den du gelesen hast:


    gehe in den src Ordner und rufe

    Code
    javac *.java


    auf: das compiliert einfach allen Code (*.java anstatt *.c wie bei C)


    rufe dann

    Code
    jar cfvm projectX.jar MANIFEST.MF *.class


    auf: das packt einfach alle *.class-Files in ein JAVA-archiv ein, also hier : projectX.jar
    der Name des archivs ist dabei völlig egal, du musst es auch gar nicht einpacken, ist nur praktischer und wie bei C dem Linking ähnlich (ich weisss, es ist nicht ganz das gleiche , aber es kommt dem am nähesten)
    in der MANIFEST.MF steht einfach nur drin welche Datei im Java-archiv aufgerufen werden soll


    jetzt kannst du das Programm mit

    Code
    java -jar projectX.jar


    starten


    solltest du wieder ein Problem mit dem Pfad haben, wie in deiner ersten Fehlermeldung
    setze ihn explizit beim Aufruf:
    also z.B.:

    Code
    java -cp [/home/usrname/test/projectX.jar] -jar projectX.jar


    falls dein erzeugtes JAVA-archiv
    /home/usrname/test/projectX.jar
    heisst


    das dies unter Linux anders/komplizierter wäre als unter [weiss der Teufel] ist kompletter Quatsch


    Anmerkung : -cp ist die Abkürzung für classpath, man kan auch stattdessen -classpath als option angeben
    kennt man ja als Linuxer von z.B:
    ls -a
    oder
    ls --all
    ganz nach Belieben

  • Vielen Dank für die Anleitung. Damit bin ich auch etwas weiter bekommen. Leider hakt es bei mir noch. Ich bin genau nach der Anleitung vorgegangen.


    Nach Starten des Programms bekomme ich folgende Fehlermeldung.
    Kannst du damit erwas anfangen? Fehlt vielleicht eine Lib?


  • du verwendest anscheinend kaffe als JVM
    korrekt?!


    java -version


    da bin ich dann auch leider überfragt
    ich weiss nicht wie weit kaffe schon ist, bzw. welche Teile ProjectX genau verwendet


    wenn du die JVM von sun verwendest -> einfach mit YAST installieren
    sollte es jedoch funktionieren

  • Hi
    danke erstmal für die Anleitung :)
    Leider haut es bei mir noch nicht ganz hin.


    Wenn ich im /src Ordner javac *.java aufrufe erstellt er mir eine RawRead.class im /src
    Wenn ich dann im /src jar cfvm projectX.jar MANIFEST.MF *.class aufrufe findet er die MANIFEST.MF nicht, da sie ja einen Ordner höher liegt.


    Code
    java.io.FileNotFoundException: MANIFEST.MF (No such file or directory)
            at java.io.FileInputStream.open(Native Method)
            at java.io.FileInputStream.<init>(FileInputStream.java:106)
            at java.io.FileInputStream.<init>(FileInputStream.java:66)
            at sun.tools.jar.Main.run(Main.java:123)
            at sun.tools.jar.Main.main(Main.java:904)


    Führe ich diesen Befehl aber einen Ordner höher aus, findet er die *.class nicht


    Code
    *.class : Datei oder Verzeichnis existiert nicht.
    Manifest wurde hinzugefügt.


    Kopiere ich nun aber vorher die MANIFEST.MF in den /src Ordner und rufe die entweder ohne oder auch mit dem -cp Pfad auf, bekomme ich wieder die Fehlermeldung, die ich am Anfang schon hatte :frowning_face:

  • MANIFEST.MFnach src kopieren und dann
    im src

    Code
    jar cfvm projectX.jar MANIFEST.MF *.classr


    aufrufen


    danach kannst du dann mit

    Code
    java -jar projectX.jar


    das Programm starten(oder eben mit dem classpath)
    wo du die projectX.jar dann hinkopierst ist egal,
    die *.class Dateien inklusive der MANIFEST.MF sind dann alle im projectX.jar verpackt

  • EDIT
    Die Beschreibung funktioniert mit der Version 0.81.7 einwandfrei, ich hatte das ganze mit der ProjectX_Source_0.82.0.00 gemacht und da die Fehler erhalten.
    Jetzt funktioniert alles bestens


    :danke: :cool2:

  • Hi,


    vielen Dank für die Hilfe, ganz speziell an Computerteddy. Anleitung war super, nun funktioniert alles!


    Danke


    Muenchn_er

  • so, ich hab mir jetzt auch die 0.82 und das Update 0.82.0.0.4 besorgt


    musste eigentlich nur das compilescript ein wenig anpassen:

    Bash
    #!/bin/bash
    #build.sh
    rm -f ProjectX.jar
    mkdir -p build
    javac -encoding "ISO-8859-1" -O -g:none -classpath lib/commons-net-1.2.2.jar:lib/jakarta-oro-2.0.8.jar -d build @sources.lst
    #javac -O -cp lib/commons-net-1.2.2.jar -d build @sources.lst
    cp resources/* build
    jar cfvm projectx.jar MANIFEST.MF -C build .


    das wichtigste kurz erklärt:
    der Zeichensatz des Quelltextes ist nicht in UTF-8, wie bei SUSE9.2 default
    sondern in ISO-8859-1, deswegen muss die Angabe
    -encoding "ISO-8859-1"
    beim Compilieren dazu
    (egal welche die OS-Installation/Distribution -> die Angabe des Encodings schadet natürlich nie )


    danach kann ProjectX, wie gehabt, mit
    java -jar projectx.jar
    aufgerufen werden

  • vielen Dank, hat super geklappt :cool2:


    Bin mir nicht sicher, aber denke in Deinem Script in Zeile 3 müsste ProjectX.jar eigentlich projectX.jar heissen, was aber bei einem frisch entpacktem Source ohne vorhandener projectX.jar sowieso unbedeutend ist :smiling_face_with_sunglasses: