Вставить видео с YouTube в JFrame?

Я провел много исследований и пытался найти руководство, которое научит меня правильно вставлять видео YouTube прямо в мой JFrame, Я прочитал все руководства для разработчиков Google API YouTube, но не могу найти именно то, что мне нужно.

Я пытаюсь вставить видео на YouTube прямо в JFrame используя init в моем основном методе. Например:

/**
 * 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);
    }
}

Под тем, где я начал свой мир, выберите интерфейс, который я хотел бы иметь "initYouTubeVideo"

Я создал пустотуinitYouTubeVideo"и не совсем понимаю, как я могу просто вставить видео и только видео. Скажем, я делаю обновление для своей игры, и я делаю об этом видео на YouTube. Я хотел бы разместить это видео на своем JFrame (без комментариев или что-то еще, просто видео с YouTube).

Может ли кто-нибудь дать мне руководство, из которого я могу узнать непосредственно о том, как встроить видео на YouTube.

Для этого поста я сделал пример JFrame, чтобы помочь вам визуально понять, чего я пытаюсь достичь. Вот изображение:

Образ

На изображении красный - место, где я бы разместил проигрыватель YouTube, а зеленый - мои интерфейсы. Теперь еще раз скажу, что я сделал обновление в своей игре и сделал видео на YouTube. Я хочу иметь возможность просто вставить ссылку на видео, и когда кто-то запускает клиент, он может нажать кнопку воспроизведения и посмотреть видео.

Примечание. Я использую API Google YouTube.

Я ознакомился со следующими руководствами: все об API YouTube можно найти здесь: https://developers.google.com/youtube/v3/getting-started

Опять же, все, что я хочу, это просто добавить видео в JFrame, чтобы мои игроки могли получать видео-обновления о новейшем игровом контенте.

Спасибо и репутация тем, кто может мне помочь.

3 ответа

Решение

Вот как я обычно встраиваю видео с YouTube в приложение Swing.

Вместо YouTube API встроенный компонент браузера встроен в JPanel с использованием 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;
}
}

При запуске это выглядит так

Для запуска приведенного выше примера необходимы следующие библиотеки:

  • DJNativeSwing.jar
  • DJNativeSwing-SWT.jar
  • swt-4.3-win32-win32-x86.jar (этот зависит от платформы)

Вы можете получить их все из пакета загрузки DJ Native Swing.

Вы можете попробовать этот код: этот код перенаправит щелчок в браузер.

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("<HTML>Click the <FONT color=\"#000099\"><U>link</U></FONT>");
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 */ }
  }
  }

У меня нет репутации, чтобы комментировать и объяснять, что происходит на Маюхе, но я хотел помочь вам. Хитрость здесь (в ответе Jk1) заключается в

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

Исходная ссылка будет:

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

но вы переключаете его на:

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

чтобы получить видео в режиме "Полноэкранный браузер".

Другие вопросы по тегам