¿Incrustar un video de YouTube a JFrame?

He estado investigando mucho y tratando de encontrar una guía que me pueda enseñar cómo incrustar correctamente un video de YouTube directamente en mi JFrame . He leído todas las guías de Google Developers en la API de YouTube, pero no puedo encontrar lo que estoy buscando hacer.

Estoy tratando de incrustar un video de YouTube directamente en el JFrame usando un init en mi método principal. Por ejemplo:

 /** * Main * @param args * @throws IOException */ public static void main(String[] args) throws IOException { try { UIManager.setLookAndFeel(new NimbusLookAndFeel()); } catch (UnsupportedLookAndFeelException ulafe) { Loader loader = new Loader(); loader.doFrame(); } Start Loader = new Start(); Loader.setVisible(true); } /** * Start * @throws IOException */ public Start() throws IOException { super("Ryan's Client Launcher version: '0.0.1'"); try { getContentPane().setBackground(Color.BLACK); setBackground(Color.BLACK); BufferedImage image39 = ImageIO.read(getClass().getResourceAsStream("\\jaggl\\igs\\39.png")); this.setIconImage(image39); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(new Dimension(launcherWidth, launcherHeight)); this.setLocationRelativeTo(null); this.setResizable(false); this.setUndecorated(true); getContentPane().setLayout(null); initWorldSelectInterface(); } catch (IOException e) { System.out.println(e); } } 

En donde he iniciado mi interfaz de selección mundial, me gustaría tener ” initYouTubeVideo

initYouTubeVideo un ” initYouTubeVideo ” vacío y no entiendo exactamente cómo puedo incorporar el video y solo el video. Digamos que hago una actualización para mi juego y hago un video de YouTube sobre eso. Me gustaría presentar ese video en mi JFrame (sin sección de comentarios ni nada más simplemente el video de YouTube).

¿Podría alguien darme una guía que pueda aprender directamente sobre cómo incrustar el video de YouTube?

Para esta publicación, hice un ejemplo de JFrame para ayudarte a comprender visualmente lo que estoy tratando de lograr. Aquí está la imagen:

Imagen

En la imagen, el rojo es donde colocaría el reproductor de YouTube y el verde es mis interfaces. Ahora nuevamente, diga que hice una actualización en mi juego e hice un video de youtube al respecto. Quiero poder poner el enlace al video y cuando alguien ejecuta el cliente pueden hacer clic en reproducir y ver el video.

Nota: estoy usando la API de YouTube de Google

He consultado las siguientes guías: Todo sobre la API de YouTube que se encuentra aquí: https://developers.google.com/youtube/v3/getting-started

De nuevo, todo lo que quiero es solo agregar el video al JFrame para que mis jugadores puedan obtener actualizaciones de video sobre el último contenido del juego.

Gracias y Rep a los que me pueden ayudar.

Esta es la forma en que generalmente uso para incrustar videos de YouTube en la aplicación Swing.

En lugar de YouTube API, un componente nativo del navegador está integrado en JPanel usando DJ Native Swing :

 public class YouTubeViewer { public static void main(String[] args) { NativeInterface.open(); SwingUtilities.invokeLater(new Runnable() { public void run() { JFrame frame = new JFrame("YouTube Viewer"); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); frame.getContentPane().add(getBrowserPanel(), BorderLayout.CENTER); frame.setSize(800, 600); frame.setLocationByPlatform(true); frame.setVisible(true); } }); NativeInterface.runEventPump(); // don't forget to properly close native components Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { @Override public void run() { NativeInterface.close(); } })); } public static JPanel getBrowserPanel() { JPanel webBrowserPanel = new JPanel(new BorderLayout()); JWebBrowser webBrowser = new JWebBrowser(); webBrowserPanel.add(webBrowser, BorderLayout.CENTER); webBrowser.setBarsVisible(false); webBrowser.navigate("https://www.youtube.com/v/b-Cr0EWwaTk?fs=1"); return webBrowserPanel; } } 

Cuando se ejecuta parece que

enter image description here

Las siguientes bibliotecas son necesarias para lanzar un ejemplo arriba:

  • DJNativeSwing.jar
  • DJNativeSwing-SWT.jar
  • swt-4.3-win32-win32-x86.jar (Este depende de la plataforma)

puedes obtenerlos a todos desde un paquete de descarga de DJ Native Swing.

Puede probar este código: este código redirigirá el clic al navegador.

 public class YoutubePlay { public static void main(String[] args) throws URISyntaxException { final URI uri = new URI("http://www.youtube.com/watch?v=qzW6mgfY5X4"); class OpenUrlAction implements ActionListener { @Override public void actionPerformed(ActionEvent e) { open(uri); } } JFrame frame = new JFrame("Links"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(100, 400); Container container = frame.getContentPane(); container.setLayout(new GridBagLayout()); JButton button = new JButton(); button.setText("Click the link"); button.setHorizontalAlignment(SwingConstants.LEFT); button.setBorderPainted(false); button.setOpaque(false); button.setBackground(Color.WHITE); button.setToolTipText(uri.toString()); button.addActionListener(new OpenUrlAction()); container.add(button); frame.setVisible(true); } private static void open(URI uri) { if (Desktop.isDesktopSupported()) { try { Desktop.getDesktop().browse(uri); } catch (IOException e) { /* TODO: error handling */ } } else { /* TODO: error handling */ } } } 

No tengo la reputación de comentar y explicar lo que está pasando Mayukh, pero quería ayudarte. El truco aquí (en la respuesta de Jk1) está en el

  webBrowser.navigate("https://www.youtube.com/v/b-Cr0EWwaTk?fs=1"); 

El enlace original sería:

  https://www.youtube.com/watch?v=b-Cr0EWwaTk 

pero lo cambias a

  https://www.youtube.com/v/b-Cr0EWwaTk?fs=1 

para obtener el video en una vista de “Pantalla completa en el navegador”.