亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? jmfcapture.java

?? Pro Java 6 3D Game Development書中的源代碼。本實例為ARMS
?? JAVA
字號:
// JMFCapture.java// Andrew Davison, May 2005, ad@fivedots.coe.psu.ac.th/* The specified capture device is assigned a JMF player.   For the assignment to work, the device should already be   registered with JMF via its JMF Registry application.   The user takes a snap by calling grabImage(), which   returns the image as a BufferedImage object with dimensions    size * size. */import java.awt.*;import java.awt.image.*;import java.io.*;import java.util.*;import java.awt.event.*;import javax.media.*;import javax.media.control.*;import javax.media.format.*;import javax.media.util.*;public class JMFCapture implements ControllerListener{  // I obtained this information from JMF Registry, under its capture devices tab  private static final String CAP_DEVICE = "vfw:Microsoft WDM Image Capture (Win32):0";       // common name in WinXP  // private static final String CAP_DEVICE = "vfw:Microsoft WDM Image Capture:0";       // common name in Win98  // private static final String CAP_DEVICE = "vfw:Logitech USB Video Camera:0";  private static final String CAP_LOCATOR = "vfw://0";  // used while waiting for the BufferToImage object to be initialized  private static final int MAX_TRIES = 7;  private static final int TRY_PERIOD = 1000;   // ms  private int size;       // x/y- dimensions of final BufferedImage  private double scaleFactor;  // snap --> final image scaling  private Player p;  private FrameGrabbingControl fg;  private BufferToImage bufferToImage = null;  private boolean closedDevice;  // used for waiting until the player has started  private Object waitSync = new Object();  private boolean stateTransitionOK = true;  public JMFCapture(int sz)  {    size = sz;    closedDevice = true;   // since device is not available yet    // link player to capture device    try {      MediaLocator ml = findMedia(CAP_DEVICE);      // MediaLocator ml = new MediaLocator(CAP_LOCATOR);	  p = Manager.createRealizedPlayer(ml);      System.out.println("Created player");    }    catch (Exception e) {      System.out.println("Failed to create player");      System.exit(0);    }    p.addControllerListener(this);    // create the frame grabber    fg =  (FrameGrabbingControl) p.getControl(                            "javax.media.control.FrameGrabbingControl");    if (fg == null) {      System.out.println("Frame grabber could not be created");      System.exit(0);    }    // wait until the player has started    System.out.println("Starting the player...");    p.start();    if (!waitForStart()) {      System.err.println("Failed to start the player.");      System.exit(0);    }    waitForBufferToImage();  }  // end of JMFCapture()  private MediaLocator findMedia(String requireDeviceName)  // return a media locator for the specified capture device  {    Vector devices = CaptureDeviceManager.getDeviceList(null);    if (devices == null) {      System.out.println("Devices list is null");      System.exit(0);    }    if (devices.size() == 0) {      System.out.println("No devices found");      System.exit(0);    }    for (int i = 0; i < devices.size(); i++) {      CaptureDeviceInfo devInfo =             (CaptureDeviceInfo) devices.elementAt(i);      String devName = devInfo.getName();      if (devName.equals(requireDeviceName)) {   // found device        System.out.println("Found device: " + requireDeviceName);        return devInfo.getLocator();   // this method may not work      }    }    System.out.println("Device " + requireDeviceName + " not found");    System.out.println("Using default media locator: " + CAP_LOCATOR);    return new MediaLocator(CAP_LOCATOR);  }  // end of findMedia()  private boolean waitForStart()  // wait for the player to enter its Started state  { synchronized (waitSync) {      try {        while (p.getState() != Controller.Started && stateTransitionOK)          waitSync.wait();      }      catch (Exception e) {}    }    return stateTransitionOK;  } // end of waitForStart()  private void waitForBufferToImage()  /* Wait for the BufferToImage object to be initialized.     May take several seconds to initialize this object,      so this method makes up to MAX_TRIES attempts.  */  {    int tryCount = MAX_TRIES;    System.out.println("Initializing BufferToImage...");    while (tryCount > 0) {      if (hasBufferToImage())   // initialization succeeded        break;      try {   // initialization failed so wait a while and try again        System.out.println("Waiting...");		Thread.sleep(TRY_PERIOD);      }      catch (InterruptedException e)      {  System.out.println(e);  }      tryCount--;    }    if (tryCount == 0) {      System.out.println("Giving Up");      System.exit(0);    }    closedDevice = false;   // device now available  }  // end of waitForBufferToImage()  private boolean hasBufferToImage()  /*  The BufferToImage object is initialized here, so that when       grabImage() is called later, the snap can be quickly changed to       an image.      The object is initialized by taking a snap, which      may be an actual picture or be 'empty'.      An 'empty' snap is a Buffer object with no video information,      as detected by examining its component VideoFormat data.       An 'empty' snap is caused by the delay in the player, which       although in its started state may still take several seconds to       start capturing.       The dimensions of the snap are used to calculate the scale      factor from the original image size to size*size.  */  {    Buffer buf = fg.grabFrame();     // take a snap    if (buf == null) {      System.out.println("No grabbed frame");      return false;    }        // there is a buffer, but check if it's empty or not    VideoFormat vf = (VideoFormat) buf.getFormat();    if (vf == null) {      System.out.println("No video format");      return false;    }    System.out.println("Video format: " + vf);    int width = vf.getSize().width;     // the image's dimensions    int height = vf.getSize().height;    if (width > height)      scaleFactor = ((double) size) / width;    else      scaleFactor = ((double) size) / height;    // initialize bufferToImage with the video format info.    bufferToImage = new BufferToImage(vf);    return true;  }  // end of hasBufferToImage()  synchronized public BufferedImage grabImage()  /* Capture an image/frame.     The frame is converted from Buffer object to Image,     and finally to BufferedImage.   */  {    if (closedDevice)      return null;    // grab the current frame as a buffer object    Buffer buf = fg.grabFrame();    if (buf == null) {      System.out.println("No grabbed buffer");      return null;    }        // convert buffer to image    Image im = bufferToImage.createImage(buf);    if (im == null) {      System.out.println("No grabbed image");      return null;    }    return makeBIM(im);  }  // end of grabImage()  private BufferedImage makeBIM(Image im)  /* Make a BufferedImage copy of im, assuming no alpha channel.     Resize it to fit into size dimensions. */  {    BufferedImage copy = new BufferedImage(size, size,                                         BufferedImage.TYPE_INT_RGB);                                        // BufferedImage.TYPE_3BYTE_BGR);      // TYPE_3BYTE_BGR is a BufferedImage format that can support       // dynamic texturing in OpenGL v.1.2 (and above) and D3D    // create a graphics context    Graphics2D g2d = copy.createGraphics();    // image --> resized BufferedImage    g2d.scale(scaleFactor, scaleFactor);         /* Scale the image according to the scaleFactor value, by            scaling the graphics context instead. */    g2d.drawImage(im,0,0,null);    g2d.dispose();    return copy;  }  // end of makeBIM()  synchronized public void close()  /* close() and grabImage() are synchronized so that it's not     possible to close down the player while a frame is being     snapped. */  {  p.close();       closedDevice = true;  }   public boolean isClosed()  {  return closedDevice;  }  public void controllerUpdate(ControllerEvent evt)  // respond to events  {    if (evt instanceof StartEvent) {   // the player has started      synchronized (waitSync) {        stateTransitionOK = true;        waitSync.notifyAll();      }    }    else if (evt instanceof ResourceUnavailableEvent) {        synchronized (waitSync) {  // there was a problem getting a player resource        stateTransitionOK = false;        waitSync.notifyAll();      }    }  } // end of controllerUpdate()} // end of JMFCapture class

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区日韩精品欧美| 丁香天五香天堂综合| aaa国产一区| 亚洲色图在线播放| 欧美精品久久99| 国产一区二区三区观看| 中文字幕不卡在线播放| 91浏览器打开| 韩国女主播成人在线| 日韩理论片在线| 国产精品福利av| 精品国产一区二区三区久久久蜜月| 理论片日本一区| 日韩伦理免费电影| 亚洲愉拍自拍另类高清精品| 久久综合久久鬼色| 欧美日韩免费观看一区二区三区| 亚洲成人高清在线| 国产精品私人影院| 久久这里只有精品首页| 国产三级精品三级| 久久一二三国产| 国产精品色在线| 一区二区高清免费观看影视大全| 国产欧美一区视频| 亚洲欧美区自拍先锋| 国产免费观看久久| 夜夜亚洲天天久久| 男女性色大片免费观看一区二区| 一级特黄大欧美久久久| 青娱乐精品在线视频| 国产精品中文字幕欧美| 九一久久久久久| 麻豆精品久久精品色综合| 日日嗨av一区二区三区四区| 亚洲成人av在线电影| 国产一区二区视频在线| 欧洲一区在线观看| 色先锋久久av资源部| 91在线精品一区二区| 99久精品国产| 日韩一二在线观看| 91精品婷婷国产综合久久性色| 欧美日产国产精品| 国产精品免费看片| 蜜桃一区二区三区四区| 色94色欧美sute亚洲线路一久| 色婷婷国产精品| 久久久久久久久久久久久女国产乱| 久久夜色精品一区| 丝袜国产日韩另类美女| av高清不卡在线| 久久久九九九九| 青娱乐精品视频| 欧美自拍偷拍午夜视频| 中文字幕中文字幕在线一区| 精品一区二区三区视频| 欧美男同性恋视频网站| 亚洲精品久久嫩草网站秘色| 日本欧美在线观看| 国产精品亚洲一区二区三区在线 | 国产精品久久久久7777按摩| 日本中文字幕一区二区视频 | 欧美一区二区视频在线观看2020 | 欧美三级在线视频| 亚洲天堂a在线| 波多野洁衣一区| 久久网这里都是精品| 美洲天堂一区二卡三卡四卡视频| 欧美少妇bbb| 久久久不卡影院| 久久超碰97中文字幕| 欧美一区二区三区视频| 天天操天天色综合| 国产成人av电影在线播放| 精品免费国产二区三区| 亚洲精品五月天| 91麻豆产精品久久久久久 | 日本久久精品电影| 亚洲视频在线观看三级| 成人99免费视频| 日韩一本二本av| 久草在线在线精品观看| 国产清纯美女被跳蛋高潮一区二区久久w | 久久精品国产**网站演员| 91精品国产91综合久久蜜臀| 青青草原综合久久大伊人精品优势| 337p亚洲精品色噜噜| 久久成人av少妇免费| 精品日韩欧美一区二区| 国产精品一区在线观看你懂的| 国产女主播在线一区二区| 成人黄色国产精品网站大全在线免费观看| 国产日韩欧美一区二区三区乱码 | 亚洲国产cao| 成人网在线播放| 久久综合久久综合九色| 成人免费高清在线| 亚洲高清久久久| 精品国产一区二区三区四区四| 成人深夜在线观看| 亚洲主播在线观看| 精品国产三级a在线观看| 成人性视频免费网站| 亚洲成a人v欧美综合天堂下载| 日韩一二三区视频| 91在线视频官网| 六月丁香婷婷色狠狠久久| 国产精品乱人伦中文| 欧美日韩精品一区二区三区蜜桃 | 99国产精品久久久| 日本sm残虐另类| 18欧美亚洲精品| 欧美一区二区三区爱爱| 99久久综合狠狠综合久久| 日韩二区在线观看| 国产精品家庭影院| 欧美一区二区免费| 色综合夜色一区| 亚洲免费观看高清完整版在线 | 欧美国产精品一区二区三区| 欧美性受xxxx| 成人一区二区三区| 紧缚奴在线一区二区三区| 一区二区三区国产精品| 欧美极品美女视频| 日韩三级视频在线观看| 色呦呦日韩精品| 成人久久视频在线观看| 久久精品二区亚洲w码| 亚洲va欧美va人人爽午夜| 国产精品久久久久久久裸模| 精品国产青草久久久久福利| 欧美日韩免费在线视频| 在线一区二区三区四区五区| 大尺度一区二区| 国产成人在线色| 亚洲黄色av一区| 国产精品美女久久久久aⅴ| 精品欧美一区二区在线观看| 69av一区二区三区| 欧美三级午夜理伦三级中视频| 91在线观看免费视频| 成人av网站免费| 成人av综合一区| 国产69精品一区二区亚洲孕妇| 激情五月激情综合网| 久久99精品久久久久| 日精品一区二区三区| 日韩国产在线一| 日韩av二区在线播放| 婷婷成人激情在线网| 丝袜美腿亚洲一区| 日本美女一区二区| 久久机这里只有精品| 久久99精品久久久久| 国产一区二区不卡老阿姨| 国产剧情av麻豆香蕉精品| 国产综合成人久久大片91| 国产美女在线观看一区| 国产成人aaaa| 99国产精品99久久久久久| 91麻豆swag| 欧美日韩精品专区| 日韩免费性生活视频播放| 在线观看视频欧美| 精品视频1区2区| 日韩一二三区视频| 国产视频一区不卡| 日韩欧美国产成人一区二区| 日韩精品专区在线影院观看| 2023国产精华国产精品| 国产精品美女久久久久久久久| 一区二区三区美女| 五月综合激情网| 国产一区二区伦理| 96av麻豆蜜桃一区二区| 欧美日韩国产中文| 精品成人佐山爱一区二区| 国产精品色在线观看| 午夜国产精品影院在线观看| 国产一区三区三区| 日本精品视频一区二区三区| 欧美精品自拍偷拍| 欧美激情在线看| 亚洲一区二区三区国产| 精品无人区卡一卡二卡三乱码免费卡| 成人一区二区三区视频| 在线播放亚洲一区| 国产女同性恋一区二区| 亚洲成人免费在线| www.亚洲色图| 91精品中文字幕一区二区三区 | 成人av资源站| 欧美一区二区不卡视频| 国产精品护士白丝一区av| 看电视剧不卡顿的网站| 色婷婷综合视频在线观看| 日韩欧美你懂的| 亚洲一卡二卡三卡四卡五卡|