本人认为:Java在多媒体方面是有先天缺陷的。

解决方案 »

  1.   

    这是一个JMF的例子,希望对你有些帮助吧
    import java.applet.*;
    import java.awt.*;
    import javax.swing.*;
    import java.net.*;
    import java.io.*;
    import java.util.*;
    import javax.media.*;public class JMFPlayer extends JPanel implements ControllerListener {    /** The player object */
        Player thePlayer = null;
        /** The parent Frame we are in. */
    JFrame parentFrame = null;
    /** Our contentpane */
    Container cp;
        /** The visual component (if any) */
        Component visualComponent = null;
        /** The default control component (if any) */
        Component controlComponent = null;
    /** The name of this instance's media file. */
    String mediaName;
    /** The URL representing this media file. */
    URL theURL; /** Construct the player object and the GUI. */
    public JMFPlayer(JFrame pf, String media) {
    parentFrame = pf;
    mediaName = media;
    // cp = getContentPane();
    cp = this;
    cp.setLayout(new BorderLayout());
    try {
    theURL = new URL(getClass().getResource("."), mediaName);
    thePlayer = Manager.createPlayer(theURL);
    thePlayer.addControllerListener(this);
    } catch (MalformedURLException e) {
    System.err.println("JMF URL creation error: " + e);
    } catch (Exception e) {
    System.err.println("JMF Player creation error: " + e);
    return;
    }
    System.out.println("theURL = " + theURL); // Start the player: this will notify our ControllerListener.
    thePlayer.start(); // start playing
    } /** Called to stop the audio, as from a Stop button or menuitem */
    public void stop() {
    if (thePlayer == null)
    return;
    thePlayer.stop(); // stop playing!
    thePlayer.deallocate(); // free system resources
    } /** Called when we are really finished (as from an Exit button). */
    public void destroy() {
    if (thePlayer == null)
    return;
    thePlayer.close();
    } /** Called by JMF when the Player has something to tell us about. */
    public synchronized void controllerUpdate(ControllerEvent event) {
    // System.out.println("controllerUpdate(" + event + ")");
    if (event instanceof RealizeCompleteEvent) {
    if ((visualComponent = thePlayer.getVisualComponent()) != null)
    cp.add(BorderLayout.CENTER, visualComponent);
    if ((controlComponent = 
    thePlayer.getControlPanelComponent()) != null)
    cp.add(BorderLayout.SOUTH, controlComponent);
    // re-size the main window
    if (parentFrame != null) {
    parentFrame.pack();
    parentFrame.setTitle(mediaName);
    }
    }
    } public static void main(String[] argv) {
    JFrame f = new JFrame("JMF Player Demo");
    Container frameCP = f.getContentPane();
    JMFPlayer p = new JMFPlayer(f, argv.length == 0 ?
    "file:///C:/music/midi/beet5th.mid" : argv[0]);
    frameCP.add(BorderLayout.CENTER, p);
    f.setSize(200, 200);
    f.setVisible(true);
    f.addWindowListener(new WindowCloser(f, true));
    }
    }
      

  2.   

    用mms协议可以调用windows的media player播放影片
    <HTML>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <LINK REL="STYLESHEET" TYPE="text/css">
    </head><A href="mms://wuzhuo/1.wmv">xxxx</A>
    <body bottomMargin=0 leftMargin=0 topMargin=15 rightMargin=0 MarginWidth="0" MarginHeight="0" >
    </body></html>
      

  3.   

    用mms协议可以调用windows的media player播放影片
    <HTML>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <LINK REL="STYLESHEET" TYPE="text/css">
    </head><A href="mms://127.0.0.1/1.wmv">xxxx</A>
    <body bottomMargin=0 leftMargin=0 topMargin=15 rightMargin=0 MarginWidth="0" MarginHeight="0" >
    </body></html>
      

  4.   

    但是我是在要网页中实现呀,我不希望弹出一个窗口来播放!
    我现在用以下代码做了一个,但是出错:
     <object id="vid" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" width=427 height=300>
    <param name="_ExtentX" value="11298">
    <param name="_ExtentY" value="7938">
    <param name="AUTOSTART" value="-1">
    <param name="SHUFFLE" value="0">
    <param name="PREFETCH" value="0">
    <param name="NOLABELS" value="-1">
    <param name="SRC" value="http://192.168.1.99:8083/11.rm";>
    <param name="CONTROLS" value="Imagewindow">
    <param name="CONSOLE" value="clip1">
    <param name="LOOP" value="0">
    <param name="NUMLOOP" value="0">
    <param name="CENTER" value="0">
    <param name="MAINTAINASPECT" value="0">
    <param name="BACKGROUNDCOLOR" value="#000000">
    </object>错误如下:
    StandardWrapperValve[default]: Servlet.service() for servlet default threw exceptionjava.net.SocketException: Connection reset by peer: socket write errorjava.net.SocketException: Connection reset by peer: socket write error at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) at java.net.SocketOutputStream.write(SocketOutputStream.java:136) at org.apache.catalina.connector.ResponseBase.flushBuffer(ResponseBase.java:674) at org.apache.catalina.connector.HttpResponseBase.flushBuffer(HttpResponseBase.java:764) at org.apache.catalina.connector.ResponseBase.write(ResponseBase.java:647) at org.apache.catalina.connector.ResponseStream.write(ResponseStream.java:312) at org.apache.catalina.connector.http.HttpResponseStream.write(HttpResponseStream.java:189) at org.apache.catalina.servlets.DefaultServlet.copyRange(DefaultServlet.java:1921) at org.apache.catalina.servlets.DefaultServlet.copy(DefaultServlet.java:1670) at org.apache.catalina.servlets.DefaultServlet.serveResource(DefaultServlet.java:1215) at org.apache.catalina.servlets.DefaultServlet.doGet(DefaultServlet.java:525) at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243) at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190) at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566) at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246) at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566) at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170) at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170) at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174) at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1027) at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1125) at java.lang.Thread.run(Thread.java:536)各位高手知道为什么吗?