/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package webcamstudio.externals; import java.io.File; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; import org.w3c.dom.Document; import org.xml.sax.SAXException; import webcamstudio.media.renderer.Capturer; import webcamstudio.mixers.MasterMixer; /** * * @author patrick (modified by karl) */ public class FME { private String url = ""; private String name = ""; private String abitrate = ""; private String vbitrate = ""; private String vcodec = ""; private String acodec = ""; private String width = ""; private String height = ""; private String stream = ""; private String mount = ""; private String password = ""; private String port = ""; private String keyInt = ""; private final MasterMixer mixer = MasterMixer.getInstance(); private String standard = "STD"; public FME(File xml) { try{ parse(xml); }catch (ParserConfigurationException | SAXException | IOException | XPathExpressionException e ){ Logger.getLogger(Capturer.class.getName()).log(Level.SEVERE, null, e); } } public FME(String url,String stream, String name, String abitrate,String vbitrate, String vcodec, String acodec, String width, String height, String mount, String password, String port, String keyint){ this.name = name; this.width = width; this.height = height; this.vcodec = vcodec; this.vbitrate = vbitrate; this.acodec = acodec; this.abitrate = abitrate; this.url = url; this.stream = stream; this.mount = mount; this.password = password; this.port = port; this.keyInt = keyint; } public FME(){ } private void parse(File xml) throws ParserConfigurationException, SAXException, IOException, XPathExpressionException { XPath path = XPathFactory.newInstance().newXPath(); String root = "/flashmediaencoder_profile"; Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(xml); name = (String)path.evaluate(root + "/preset/name", doc,XPathConstants.STRING); if (name==null || name.length()==0){ root = "/flashmedialiveencoder_profile"; name = (String)path.evaluate(root + "/preset/name", doc,XPathConstants.STRING); } width = (String)path.evaluate(root + "/capture/video/size/width", doc,XPathConstants.STRING); height = (String)path.evaluate(root + "/capture/video/size/height", doc,XPathConstants.STRING); vcodec = (String)path.evaluate(root + "/encode/video/format", doc,XPathConstants.STRING); vbitrate = (String)path.evaluate(root + "/encode/video/datarate", doc,XPathConstants.STRING); if (vbitrate.indexOf(';')!=-1){ vbitrate = vbitrate.substring(0, vbitrate.indexOf(';')); } acodec = (String)path.evaluate(root + "/encode/audio/format", doc,XPathConstants.STRING); abitrate = (String)path.evaluate(root + "/encode/audio/datarate", doc,XPathConstants.STRING); url = (String)path.evaluate(root + "/output/rtmp/url", doc,XPathConstants.STRING); stream = (String)path.evaluate(root + "/output/rtmp/stream", doc,XPathConstants.STRING); mount = (String)path.evaluate(root + "/output/rtmp/mount", doc,XPathConstants.STRING); password = (String)path.evaluate(root + "/output/rtmp/password", doc,XPathConstants.STRING); port = (String)path.evaluate(root + "/output/rtmp/port", doc,XPathConstants.STRING); String keyI = (String)path.evaluate(root + "/encode/video/advanced/keyframe_frequency", doc,XPathConstants.STRING); if (!"".equals(keyI)) { String[] kInt = keyI.split(" "); String g = kInt[0].replaceAll(" ", ""); int sec = Integer.parseInt(g); int kInteger = sec*mixer.getRate(); keyInt = Integer.toString(kInteger); } else { int kInteger = 5*mixer.getRate(); keyInt = Integer.toString(kInteger); } // System.out.println("Pharsed KeyInt: "+keyInt+"###"); } /** * @return the url */ public String getUrl() { return url; } public void setUrl(String sUrl) { this.url = sUrl; } /** * @return the name */ public String getName() { return name; } public void setName(String n) { name = n; } public void setStandard(String gStandard) { standard = gStandard; } public String getStandard() { return standard; } /** * @return the abitrate */ public String getAbitrate() { return abitrate; } public void setAbitrate(String sAbitRate) { abitrate = sAbitRate; } /** * @return the vbitrate */ public String getVbitrate() { return vbitrate; } public void setVbitrate(String sVbitRate) { vbitrate = sVbitRate; } /** * @return the vcodec */ public String getVcodec() { return vcodec; } /** * @return the acodec */ public String getAcodec() { return acodec; } /** * @return the width */ public String getWidth() { return width; } public void setWidth(String sW) { width = sW; } /** * @return the height */ public String getHeight() { return height; } public void setHeight(String sH) { height = sH; } /** * @return the stream */ public String getStream() { return stream; } public void setStream(String sStr) { stream = sStr; } /** * @return */ public String getMount() { return mount; } public void setMount(String sMount) { mount = sMount; } public String getPassword() { return password; } public void setPassword(String sPsw) { password = sPsw; } public String getPort() { return port; } public void setPort(String sPort) { port = sPort; } public String getKeyInt() { return keyInt; } public void setKeyInt(String sKeyI) { keyInt = sKeyI; } }