HDMI Ausgänge mit Java programmieren?

Diskutiere HDMI Ausgänge mit Java programmieren? im Spiele- und Multimedia-Programmierung Forum; hallo liebe Menschen Ich suche einen weg (für einen kompletten Anfänger) mit java ein Programm zu schreiben mit welches ich die Ausgänge des HDMI...

  1. jacknjonny
    jacknjonny Neues Mitglied
    hallo liebe Menschen
    Ich suche einen weg (für einen kompletten Anfänger) mit java ein Programm zu schreiben mit welches ich die Ausgänge des HDMI Signals festlegen/kontrollieren kann. Ist das möglich, sinnvoll, odr gar fehl am platz? Bin für jeden beitrag dankbar der mich weiter bringt! :)
     
  2. Vielleicht hilft dir das kostenlose Training weiter --> (hier klicken)
  3. mrBrown
    mrBrown Bekanntes Mitglied
    Deine Frage ist etwas unverständlich, aber wahrscheinlich ist Java dafür die falsche Sprache...

    Was soll "Ausgänge des HDMI Signals festlegen" bedeuten?
     
  4. jacknjonny
    jacknjonny Neues Mitglied
    Also danke erstmal für die rasche antwort, meine Allergie macht es für mich schwierig auf Schreibfehler odr sonstiges zuachten,

    Was ich damit meine ist eig ganz einfach gesagt:

    HDMI 1 = spiel 1 auf monitor 1
    HDMI 2 = film 1 auf monitor 2
    HDMI 3 = liste1 (irgendwelche) auf monitor 3
    HDMI 4 = skype auf monitor 4

    Und das alles von einem Rechner aus.
    Welche sprache ist nötig ?
     
  5. Tobse
    Tobse Bekanntes Mitglied
    Welches Betriebssystem denn?

    Entweder kannst du das direkt im OS konfigurieren. Oder aber du musst dem OS mitteilen, welche Anwendung auf welchen Bildschirm soll. Ob das geht hängt aber stark vom OS ab und geht mit Java sicher nicht.
     
  6. jacknjonny
    jacknjonny Neues Mitglied
    Aber müsst doch theoretisch ein Programm geben mit dem man das steuern kann? Obs jetz im OS drin wär oder nicht? Ich denke mal ich arbeite mit einem windows, mac ist mir gerade zu kostspielig..
     
  7. Dukel
    Dukel Mitglied
    Du schiebst einfach die Fenster auf die entsprechenden Monitore. Da braucht man kein Programm zur Steuerung. Die meisten Programme merken sich, wo sie liefen.
     
  8. jacknjonny
    jacknjonny Neues Mitglied
    Ich würde aber sehr gern eines schreiben welches die Parameter festlegt. Ich versteh eure Skepsis aber wenn ihr seht was ich vorhabe dann versteht ihr es:)
     
  9. Dukel
    Dukel Mitglied
    Es kommt auf die Programme an. Wenn diese eine Funktion bieten das Programm von außen zu steuern, dann kannst du darauf zugreifen. Ich wüsste aber nicht das es etwas generisches gibt.
     
  10. Tobse
    Tobse Bekanntes Mitglied
    Na dann musst du C-Code schreiben, der mit dem Windows Window-Manager redet und ihm sagt, welches Fenster auf welchen Schirm gehört. Ob das geht und wie die API calls sind kann ich dir nicht sagen, aber Java ist sicherlich die falsche Sprache dafür.
     
  11. jacknjonny
    jacknjonny Neues Mitglied
    Oke kennt sich jemand hier im forum damit aus? Und könnte das MIT (nicht für mich..) mir auf die beine stellen?
     
  12. AndyJ
    AndyJ Mitglied
    Howdy,
    Ich habe mal ein bischen rumgespielt:

    Code (Java):

    package info.junius.test;

    import java.awt.Desktop;
    import java.awt.GraphicsConfiguration;
    import java.awt.GraphicsDevice;
    import java.awt.GraphicsEnvironment;
    import java.awt.Rectangle;
    import java.io.File;
    import java.io.IOException;
    import java.net.URI;
    import java.net.URISyntaxException;

    import javax.swing.JFrame;
    import javax.swing.JLabel;

    public class DesktopScreens {

     public static void main(String[] args) {
      GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
      if (!env.isHeadless()) {
       GraphicsDevice[] devices = env.getScreenDevices();
       int p = 0;
       for (GraphicsDevice gd : devices) {
        System.out.println(gd);
        System.out.println(gd.getIDstring());
        System.out.println(gd.getDisplayMode().getWidth() + "/" + gd.getDisplayMode().getHeight());
       
        placeFramesOn(gd, p);
        ++p;
       }
      }
     }
     
     private static void placeFramesOn(GraphicsDevice device, int p) {
      GraphicsConfiguration[] gc = device.getConfigurations();
      for (int i = 0; i < gc.length; ++i) {
       System.out.println(gc[i]);
       JFrame frame = new JFrame(device.getDefaultConfiguration());
       JLabel label = new JLabel(device.toString());
       Rectangle gcBounds = gc[i].getBounds();
       int xoffs = gcBounds.x;
       int yoffs = gcBounds.y;
       frame.getContentPane().add(label);
       frame.setLocation(i * 100 + xoffs, i*150 + yoffs);
       frame.setSize(200, 80);
       frame.setVisible(true);
       // die Idee: das Programmfenster geht da auf, wo der Frame den Focus hat
       // Problem: es funktioniert nicht
       // Anderer Ansatz: nutze die Process API to run shell script that does the job
       frame.requestFocusInWindow();
       if (p == 0) {
        try {
         Desktop.getDesktop().browse(new URI("http://example.com"));
         Thread.sleep(5000);
        } catch (IOException | URISyntaxException | InterruptedException  e) {
         e.printStackTrace();
        }
       }
       if (p == 1) {
        try {
         Desktop.getDesktop().edit(new File("test.txt"));
         Thread.sleep(5000);
        } catch (IOException | InterruptedException e) {
         e.printStackTrace();
        }
       }
       
      }

     }
     

    }
     
    Ich hatte gedacht, die Fenster die man da oeffned waeren an den JFrame gebunden. Ist aber leider nicht der Fall. Nun koennte man stattdessen Batchfiles oder Shell-scripte schreiben, die die noetigen Parameter uebernehmen und dann die Programme oeffnen oder schon geoeffnete and den richtigen Platz verschieben. Es gibt scheinbar Tools, die das koennen aber da musst du selber suchen. Have fun!

    Cheers,
    Andreas
     
  13. Tobse
    Tobse Bekanntes Mitglied
    @AndyJ Wieso in aller Welt sollten die Fenster von Skype oder einem Video-Player was mit den JFrames in einem anderen Prozess zu tun haben??
     
  14. jacknjonny
    jacknjonny Neues Mitglied
  15. jacknjonny
    jacknjonny Neues Mitglied
    Danke andreas !
    Obwohl ich nicht viel davon verstanden hab..
    Abgesehn von den software Problemen hab ich ja auch nicht 4 hdmi Eingänge und würde das meine Grafikkarte überhaupt aushalten?
     
  16. mrBrown
    mrBrown Bekanntes Mitglied
    Kommt auf die Grafikkarte an, gibts durchaus welche, die das können.

    Gibts unter Unixoiden mit virtuellen Desktops überhaupt eine Zuordnung von Programm zu realem Bildschirm?
     
  17. jacknjonny
    jacknjonny Neues Mitglied
    Wäre es schlauer vll 2 Grafikkarten zu verwenden um die eine nicht auszulasten?
    Dann würde man vll auch keine Zuordnung zu realen Bildschirmen brauchen weil es dann "nur" 2 Bilder nebeneinander die auf 2 Bildschirme gezogen sind sein, oder wäre es schwierig einem unixoiden beizubringen viertuelle und reale Bildschirme zu verstehen und wahrzunehmen?
     
  18. AndyJ
    AndyJ Mitglied
    Haben die nicht. Ich hab's einfach probiert - manchmal endeckt man dabei was Neues, manchmal nicht.
     
  19. AndyJ
    AndyJ Mitglied
    Es kann auch sein, dass dir das Betriebssystem nur einen grossen Bildschirm mit Riesenaufloesung vorgaukelt.
     
  20. Neumi5694
    Neumi5694 Mitglied
    Also HDMI direkt ansteuern wirst du a) nicht hinkriegen und b) ist das der falsche Weg.
    Je nach System kriegt die Anwendung gar nicht mit, welche Hardware im Hintergrund tuckert.
    mrBrown liegt völlig richtig, im Normalfall kriegst du nur abstrahierte, virtuelle Desktops. Wohin die dann gehen ... das ist nicht dein Bier (kannst du natürlich abfragen).
    Stell dir mal vor, du greifst mit Remotedesktop auf den PC zu. In dem Fall geht das Signal über gar keinen Display-Port, sondern wird über ein virtuelles Gerät über das Netzwerk geschickt.
    Was die Grafikkarten angeht, da wirst du auch keinen direkten Zugriff kriegen.
    Du kannst natürlich abfragen, was dir alles zur Verfügung steht und entsprechend anfordern, sofern möglich.
    https://docs.oracle.com/javase/7/docs/api/java/awt/GraphicsEnvironment.html
    https://docs.oracle.com/javase/7/docs/api/java/awt/GraphicsConfiguration.html

    Bei allem gilt: Jeder der Einträge kann virtuell sein oder echte Hardware im Hintergrund haben, es gibt da für dich als Frontend-Programmierer keinen Unterschied.
     
  21. Schau dir jetzt hier den Kurs an und lerne Java zu programmieren: --> Hier klicken, um mehr zu erfahren (Klick)
Thema: HDMI Ausgänge mit Java programmieren?