📄 playerpanel.java
字号:
* */ private void initialize() { loadPrefs(); this.setLayout(new BorderLayout()); this.setSize(new Dimension(363, 218)); this.add(getPlayerToolBar(), BorderLayout.NORTH); JPanel southPanel = new JPanel(); southPanel.setLayout(new BorderLayout()); this.add(southPanel, BorderLayout.SOUTH); southPanel.add(getTransportControlPanel(), BorderLayout.NORTH); southPanel.add(getStatusBar(), BorderLayout.SOUTH); this.add(getVideoPanel(), BorderLayout.CENTER); } /** load preferences */ private void loadPrefs() { try { final File f = PlayerPanelPrefs.getFile(); if (!f.exists()) { logger.fine("FMJStudio prefs file does not exist. Using defaults."); setDefaultPrefs(); return; } FileReader reader = new FileReader(f); prefs = new PlayerPanelPrefs(); prefs.load(reader); } catch (Exception e) { logger.warning("Problem loading FMJStudio prefs: " + e + ". Using defaults."); setDefaultPrefs(); } } /** create default prefs and save them. */ private void setDefaultPrefs() { prefs = new PlayerPanelPrefs(); prefs.recentUrls.add("http://stream.lrz-muenchen.de:31337/m945-hq.ogg"); // internet ogg radio, munich student station.... prefs.recentUrls.add("http://stream.lrz-muenchen.de:31337/m945-hq.mp3"); // internet mp3 radio, munich student station.... prefs.recentUrls.add("file://samplemedia/hen.mp3"); prefs.recentUrls.add("file://samplemedia/lion_roar.mp3"); prefs.recentUrls.add("file://samplemedia/betterway.wav"); // from EJMF prefs.recentUrls.add("file://samplemedia/issues.au"); // from EJMF prefs.recentUrls.add("file://samplemedia/gulp.wav"); // from EJMF prefs.recentUrls.add("file://samplemedia/gulp2.wav"); // from EJMF prefs.recentUrls.add("file://samplemedia/Gloria_Patri.ogg"); prefs.recentUrls.add("file://samplemedia/safexmas.mov"); // from EJMF prefs.recentUrls.add("http://fmj.larsontechnologies.com/samplemedia/Apollo_15_liftoff_from_inside_LM.ogg"); // Apollo 15 movie from wikimedia //prefs.recentUrls.add("http://upload.wikimedia.org/wikipedia/commons/d/d0/Apollo_15_liftoff_from_inside_LM.ogg"); // Apollo 15 movie from wikimedia prefs.recentUrls.add("http://www.surfshooterhawaii.com//cgi-bin/axispush555.cgi?dummy=garb"); // sample IP surf cam, streaming MJPG prefs.recentUrls.add("http://towercam.uu.edu/axis-cgi/mjpg/video.cgi"); // sample IP camera, streaming MJPG prefs.recentUrls.add("http://www.easylife.org/386dx/smells.mp3"); // just being silly now prefs.rtpTransmitWizardConfig.url = "file://samplemedia/gulp2.wav"; prefs.rtpTransmitWizardConfig.trackConfigs = new TrackConfig[] {new TrackConfig(true, new AudioFormat(AudioFormat.ULAW_RTP, 8000.0, 8, 1, AudioFormat.LITTLE_ENDIAN, AudioFormat.SIGNED))}; prefs.rtpTransmitWizardConfig.destUrl = "rtp://192.168.1.4:8000/audio/16"; //RTPUrlParser.parse("rtp://192.168.1.4:8000/audio/16"); prefs.transcodeWizardConfig.url = "file://samplemedia/gulp2.wav"; prefs.transcodeWizardConfig.contentDescriptor = new FileTypeDescriptor(FileTypeDescriptor.WAVE); prefs.transcodeWizardConfig.trackConfigs = new TrackConfig[] {new TrackConfig(true, new AudioFormat(AudioFormat.LINEAR, 8000.0, 8, 1, -1, AudioFormat.UNSIGNED))}; prefs.transcodeWizardConfig.destUrl = URLUtils.createUrlStr(new File(PathUtils.getTempPath(), "gulp2-transcoded.wav")); // TODO: format savePrefs(); } /** save preferences. */ private void savePrefs() { try { FileWriter fileWriter = new FileWriter(PlayerPanelPrefs.getFile()); prefs.write(fileWriter); fileWriter.flush(); fileWriter.close(); } catch (Exception e) { logger.log(Level.WARNING, "savePrefs failed: " + e, e); } } /** * This method initializes playerToolBar * * @return javax.swing.JToolBar */ private JToolBar getPlayerToolBar() { if (playerToolBar == null) { playerToolBar = new JToolBar(); playerToolBar.setFloatable(false); playerToolBar.add(getOpenButton()); playerToolBar.add(getOpenCaptureDeviceButton()); playerToolBar.add(getAddressPanel()); playerToolBar.add(getLoadButton()); } return playerToolBar; } /** * This method initializes openButton * * @return javax.swing.JButton */ private JButton getOpenButton() { if (openButton == null) { openButton = new JButton(); openButton.setToolTipText("Browse for media file..."); openButton.setIcon(new ImageIcon(getClass().getResource("/net/sf/fmj/ui/images/cvs_folder_rep.png"))); openButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent arg0) { onOpenFile(); } }); } return openButton; } public void onOpenFile() { final JFileChooser chooser = new JFileChooser(); if (chooser.showOpenDialog(PlayerPanel.this) ==JFileChooser.APPROVE_OPTION) { final String urlStr = URLUtils.createUrlStr(chooser.getSelectedFile()); addMediaLocatorAndLoad(urlStr); } } private JButton getOpenCaptureDeviceButton() { if (openCaptureDeviceButton == null) { openCaptureDeviceButton = new JButton(); openCaptureDeviceButton.setToolTipText("Select capture device..."); openCaptureDeviceButton.setIcon(new ImageIcon(getClass().getResource("/net/sf/fmj/ui/images/webcam.png"))); // TODO: different icon openCaptureDeviceButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent arg0) { onOpenCaptureDevice(); } }); } return openCaptureDeviceButton; } public void onOpenCaptureDevice() { MediaLocator locator = CaptureDeviceBrowser.run(getParentFrame()); if (locator != null) { addMediaLocatorAndLoad(locator.toExternalForm()); } } private Frame getParentFrame() { // TODO: there must be a better way in swing to do this... Container c = getParent(); while (c != null) { if (c instanceof Frame) return (Frame) c; c = c.getParent(); } throw new RuntimeException("No parent frame"); } public void onTransmitRTP() { RTPTransmitWizard w = new RTPTransmitWizard(getParentFrame(), prefs.rtpTransmitWizardConfig); boolean result = w.run(); // store preferences if successful if (result) { containerPlayer.setRealizedStartedProcessor(w.getResult().processor); prefs.rtpTransmitWizardConfig = w.getConfig(); // TODO: this is the same object, we need to copy somewhere. savePrefs(); } } public void onTranscode() { TranscodeWizard w = new TranscodeWizard(getParentFrame(), prefs.transcodeWizardConfig); boolean result = w.run(); // store preferences if successful if (result) { containerPlayer.setRealizedStartedProcessor(w.getResult().processor); prefs.transcodeWizardConfig = w.getConfig(); // TODO: this is the same object, we need to copy somewhere. savePrefs(); } } public void onReceiveRTP() { String url = RTPReceivePanel.run(getParentFrame()); if (url == null) return; // cancel addMediaLocatorAndLoad(url); } public void onOpenURL() { String url = URLPanel.run(getParentFrame()); if (url == null) return; // cancel addMediaLocatorAndLoad(url); } public void onAutoPlay(boolean value) { logger.fine("onAutoPlay: " + value); prefs.autoPlay = value; savePrefs(); } public void onAutoLoop(boolean value) { prefs.autoLoop = value; if (containerPlayer != null) containerPlayer.setAutoLoop(value); savePrefs(); } public PlayerPanelPrefs getPrefs() { return prefs; } /** * This method initializes transportControlPanel * * @return net.sf.fmj.ui.control.TransportControlPanel */ private TransportControlPanel getTransportControlPanel() { if (transportControlPanel == null) { transportControlPanel = new TransportControlPanel(); transportControlPanel.setPlayer(getContainerPlayer()); } return transportControlPanel; } private JLabel getStatusBar() { if (statusBar == null) { statusBar = new JLabel(); statusBar.setText(" "); // so it will lay out properly } return statusBar; }} // @jve:decl-index=0:visual-constraint="10,10"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -