⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 radio.java

📁 java语言开发的P2P流媒体系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		}
		
		return defaultValue;
	}
	
	protected static final String parseStringArg(Vector args, String parameter, String defaultValue)
	{
		for (int i = 0; i < args.size(); i++)
		{
			String arg = ((String)args.get(i)).toLowerCase();
			if (arg.equals("-" + parameter.toLowerCase()) || arg.equals("--" + parameter.toLowerCase()) || arg.equals("/" + parameter.toLowerCase())) //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
			{
				String result = (String)args.get(i+1);
				args.remove(i+1);
				args.remove(i);
				return result;
			}
		}
		return defaultValue;
	}
	
	public boolean isLoggable(LogRecord record)
	{
		if (record.getLevel().intValue() < Level.INFO.intValue())
		{
			return displayDebugMessages;
		}
		else
		{
			return true;
		}
	}
	
	public static String removePrefix(String url)
	{
	  // Remove the "p2p-radio://" or "s2s://" prefix
	
	
		if (url.toLowerCase().startsWith("p2p-radio:")) //$NON-NLS-1$
		{
			url = url.substring(10, url.length());
		}
		if (url.toLowerCase().startsWith("s2s:"))
			url = url.substring(4, url.length());
		
		if (url.startsWith("//")) //$NON-NLS-1$
		{
			url = url.substring(2, url.length());
		}
		else if (url.startsWith("/")) //$NON-NLS-1$
		{
			url = url.substring(1, url.length());
		}
		
		if (url.endsWith("/")) //$NON-NLS-1$
		{
			url = url.substring(0, url.length() - 1);
		}
	
		return url;
	}
	
	private void exit(String message, boolean noGUI)
	{
		if (message != null)
		{
			System.out.println(message);
			
			if (!noGUI)
			{
				RadioGUI.setLookAndFeel();
				javax.swing.JOptionPane.showMessageDialog(null, message, Messages.getString("GENERAL_ERROR"), javax.swing.JOptionPane.ERROR_MESSAGE, null); //$NON-NLS-1$
			}
		}
		
		System.exit(1);
	}
	
	private void exitWithLogger(String message, boolean noGUI)
	{
		if (message != null)
		{
			if (!noGUI)
			{
				RadioGUI.setLookAndFeel();
				javax.swing.JOptionPane.showMessageDialog(null, message, Messages.getString("GENERAL_ERROR"), javax.swing.JOptionPane.ERROR_MESSAGE, null); //$NON-NLS-1$
			}
		}
		
		System.exit(1);
	}
	public void readXML()
	{
		//
		
		Object[] selections = null;
		
		//Get the settings we just read from the xml file
		//If the xml file cannot be found or is invalid, defaults will be read
		
		//LAN
		/*if (isServer)
		{
			serverUsesVerifiedBandwidth = xml.This_Server_Uses_Verified_Bandwidth();
			MinimumChildrenClientsMustServe = xml.getMinimumChildrenClientsMustServe();
		}*/
		LANUpload = xml.getLANUpload();
		LANDownload = xml.getLANDownload();
		if (LANUpload != -2)
		{
			String[] logInputs = {"" + LANUpload, "" + LANDownload};
			Logger.info("MainFrame","MainFrame.BANDWIDTH_LIMIT_SET_TO", logInputs);
		}
		
		//INTERNET
		IP = xml.getIP();
		if (IP == null)
		{
			boolean test = xml.testBandwidth();
			if (test == true)
			{
				doBandwidthTest();
				Logger.info("Radio", "Radio.VERIFIED_BANDWIDTH_LIMIT_NOT_SET_FIRST");
			}
			else
			{
				Logger.info("Radio", "Radio.VERIFIED_BANDWIDTH_LIMIT_NOT_SET");
			}
		}
		else
		{
			internetMaxUpload = xml.Get_Internet_Upload_Max();
			internetMaxDownload = xml.Get_Internet_Download_Max();
			internetUpload = xml.Get_Internet_Upload_Limit();
			internetDownload = xml.Get_Internet_Download_Limit();
		
			String[] logInputs = {IP, "" + internetUpload, "" + internetDownload};
			Logger.info("MainFrame", "MainFrame.VERIFIED_BANDWIDTH_LIMIT_SET_TO", logInputs);
		}
		//HISTORY
		urlToStationname = xml.getLinks();
		
		log = xml.getLogByDate();
		if (log)
		{
			logByDate(this);
		}
		Radio.startMediaPlayer = xml.startMediaPlayerAtStartup();
		Radio.displayDebugMessages = xml.getDisplayDebug();
		
		logFilename = xml.getLogAs();
		if (logFilename != null && !logFilename.equals(""))
		{
			logAs(logFilename, this);
		}
		Radio.enableMonitor = xml.getEnableMonitor();
		Radio.signOrVerify = xml.getSignOrVerify();
		//End of getting settings
		negativeLag = xml.getNegativeLagEnabled();
		playerGain = xml.getPlayerGain();
		
	}
	public static void logByDate(Filter filter){
//		Get A Date
		GregorianCalendar calendar = new GregorianCalendar();
		long year = calendar.get(Calendar.YEAR);
		long month = calendar.get(Calendar.MONTH) + 1;
		long day = calendar.get(Calendar.DAY_OF_MONTH);
		long hour = calendar.get(Calendar.HOUR);
		long min = calendar.get(Calendar.MINUTE);
		long sec = calendar.get(Calendar.SECOND);
		int AM_PM = calendar.get(Calendar.AM_PM);
		String halfDay;
		if (AM_PM == Calendar.PM)
			halfDay = "PM";
		else 
			halfDay = "AM";
			
      
        String logName = month + "-" + day + "-" + year + " " + hour + ";" + min + ";" + sec + halfDay;
		logAs(logName, filter);
	}
	public static void logAs(String logName, Filter filter)
	{
		try
		{
			Handler logfileHandler = new FileLogHandler(logName);
			logfileHandler.setFilter(filter);
			logfileHandler.setFormatter(new LogFormatter());
				Logger.getLogger().addHandler(logfileHandler);
			}
		catch (IOException error)
		{
				//exit(Messages.getString("Radio.INVALID_LOGFILE_NAME"), noGUI); //$NON-NLS-1$
		}
		Logger.info("MainFrame","MainFrame.OUTPUTTING_LOG", logName);
	}
	public void setBandwidth(double maxUpload, double maxDownload, String IP)
	{
		if (isServer && (xml.getMonitorAddress() == null || xml.getMonitorAddress().equals("")))
			xml.setMonitorAddress(IP);
		DecimalFormat sf3 = new DecimalFormat("0.000");
		String upload = new String();
		String download = new String();
		if (maxUpload != -1)
		{
			double maxUploadBandwidth = maxUpload - 1.0;  //Designate 1KB/s for data messages
			upload = sf3.format(maxUploadBandwidth);
		}
		if (maxDownload != -1)
		{
			double maxDownloadBandwidth = maxDownload - 1.0;  //Designate 1KB/s for data messages
			download = sf3.format(maxDownloadBandwidth);
		}
		
		xml.setInternetMax(upload, download, IP);
		xml.Set_Internet_Download_Limit(download);
		xml.Set_Internet_Upload_Limit(upload);
		
		xml.flush();
		readXML();
	}
	public void doBandwidthTest()
	{
		Tcpbw100 bTest = new Tcpbw100(this);
		bTest.start();
	}
	private String input()
	{
		String temp = "";
		try {
			temp = commandLine.readLine().toLowerCase().trim();
		} catch (Exception e) {
			Logger.severe("Radio", "INTERNAL_ERROR", e); //$NON-NLS-1$ //$NON-NLS-2$
		}
		return temp;
	}
	public String getUrl()
	{
		return url;
	}


	public void setPeer(Peer peer) {
		System.out.println("here");
		if (isServer)
		{
			if (addYP)
				peer.getBroadcastBuffer().addToYP(this);
			metadata = peer.getBroadcastBuffer().getMetadata();
			
			addYP = !addYP;
			
		}
		if (peer == null || peer.isDisconnected())
			return;
		isConnected = true;
		this.peer = peer;
		int port = peer.getPort();
		System.out.println(Messages.getString("Radio.PORT_NUMBER", new Integer(port))); //$NON-NLS-1$
		System.out.println(Messages.getString("Radio.MP3_STREAM_PORT_NUMBER", new Integer(port + Peer.PLAYER_PORT_OFFSET))); //$NON-NLS-1$
		System.out.println(Messages.getString("Radio.WEB_SERVER_PORT_NUMBER", new Integer(port + Peer.WEBINTERFACE_PORT_OFFSET))); //$NON-NLS-1$
		System.out.println();
		uiPlayer = new UIPlayer(peer.getListenBuffer(), this);
		uiPlayer.start();
	}


	public SettingsXML getSettingsXML() {
		return xml;
	}


	public boolean getIsServer() {
		return isServer;
	}


	public boolean getAddYP() {
		return addYP;
	}


	public Metadata getMetadata() {
		return metadata;
	}


	public void updateTime(long timestamp) {
		// TODO Auto-generated method stub
		
	}
	public void setIntegratedPlaying(boolean playing)
	{
		
	}

	public void updateMetadata(Metadata metadata) {
		this.metadata = metadata;
		if (xml.startMediaPlayerAtStartup() && xml.getUseIntegratedPlayer() && networkComponents.getIntegratedPlayer() == null)
		{
			setIntegratedPlaying(true);
			networkComponents.launchIntegratedPlayer();	
		}
		String newStationName = metadata.getStationName();
		if (!newStationName.equals(stationName))
		{
			stationName = newStationName;
			String[] info = {stationName, url};
			Logger.info("Radio", "Radio.CONNECTED_TO", info);
		}
		
		if (urlToStationname != null && !(stationName.equals(urlToStationname.get(url))))  //If we have never connected to this station
			{
				xml.writeLink(stationName, url);
				xml.flush();
				urlToStationname.put(url, stationName);
			}
	}
	//TODO - a console playpause command, "p"
	public static void playpause(NetworkComponentsContainer networkComponents, UI ui)
	{
		BasicPlayer player = null;
		if (networkComponents == null)
			return;
		player = networkComponents.getIntegratedPlayer();
		if (player != null && player.getStatus() == player.PLAYING)
		{
			try {
				ui.setIntegratedPlaying(false);
				player.stop();
				Logger.info("Radio", "Radio.INTEGRATED_STOPPED");
			} catch (BasicPlayerException e) {
			}
		}
		else if (player == null || player.getStatus() == player.STOPPED)
		{
			networkComponents.launchIntegratedPlayer();
			ui.setIntegratedPlaying(true);
		}
	}
	public double getGain()
	{
		return playerGain;
	}
	public static String getContentTransport(Metadata metadata, Peer peer)
	{
		String streamType;
		
		String contentType = metadata.getContentType().toLowerCase();
		if (contentType.equals("audio/mpeg")) //$NON-NLS-1$
		{
			streamType = Messages.getString("MainFrame.STREAM_MP3"); //$NON-NLS-1$
		}
		else if (contentType.equals("video/nsv")) //$NON-NLS-1$
		{
			streamType = Messages.getString("MainFrame.STREAM_NSV"); //$NON-NLS-1$
		}
		else if (contentType.equals("application/ogg")) //$NON-NLS-1$
		{
			streamType = Messages.getString("MainFrame.STREAM_OGG_VORBIS"); //$NON-NLS-1$
		}
		else if (contentType.equals("audio/aacp"))
		{
			streamType = Messages.getString("MainFrame.STREAM_AAC+");
		}
		else if (contentType.equals("audio/aac"))
		{
			streamType = Messages.getString("MainFrame.STREAM_AAC");
		}
		else
		{
			streamType = contentType;
		}
		
		int mode = peer.getStreamMode();
		String transport = null;
		if (mode == SettingsXML.TCP)
			transport = Messages.getString("MainFrame.TCP_P2P");
		if (mode == SettingsXML.UDP)
			transport = Messages.getString("MainFrame.UDP_P2P");
		if (mode == SettingsXML.MULTICAST_PLUS)
		{
			if (peer.isServer())
				transport = Messages.getString("MainFrame.M+_SERVER");
			else if (peer.getSupplier().isMulticastAddress())
				transport = Messages.getString("MainFrame.M+_MCAST");
			else 
				transport = Messages.getString("MainFrame.M+_P2P");
		}
		
		String contentTransport = streamType + " (" + transport + ")";
		return contentTransport;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -