こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

JMFでリアルタイム動画配信

JavaのJMFを使用してWebカメラからの動画をネットワークで相手に見れるシステムを製作しています。

つまり、ライブチャットみたいなものを作っています。

その際に参考になると思うようなリストを手にいれました。

public class GrabFrame extends JPanel {
Player player;
Image img = null;

public static void main(String[] args) {
JFrame frame = new JFrame("Grab");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(100, 100, 320, 240);
frame.getContentPane().add(new GrabFrame());
frame.setVisible(true);
}

public GrabFrame(){
try {
player = Manager.createRealizedPlayer(new MediaLocator("vfw://0"));
} catch(Exception e){
System.out.println(e);
System.exit(1);
}
new Timer(20, new ActionListener(){
public void actionPerformed(ActionEvent e){
grab_proc();
repaint();
}
}).start();
player.start();
}

void grab_proc(){
FrameGrabbingControl frameGrabber
=(FrameGrabbingControl)player.getControl("javax.media.control.FrameGrabbingControl");
Buffer buf = frameGrabber.grabFrame();
img =(new BufferToImage((VideoFormat)buf.getFormat()).createImage(buf));
}

public void paint(Graphics g){
if(null == img) return;
g.drawImage(img, 0, 0, getWidth(), getHeight(), null);
}
}

このリストでのrepaint()なんていうメソッドはないのに実行してるのはおかしいと思いました。どなたか理由を教えてください。

あと
img =(new BufferToImage((VideoFormat)buf.getFormat()).createImage(buf));
ここでのimgはjpgなんですか??

無知ですみません。どなたか指導お願いします。

投稿日時 - 2005-11-21 18:16:20

QNo.1792976

すぐに回答ほしいです

質問者が選んだベストアンサー

 こんばんは。

>このリストでのrepaint()なんていうメソッドはないのに
>実行してるのはおかしいと思いました。

 GrabFrameクラスは、JPanelクラスを継承しています。
 つまり、JPanelが持っている継承可能なメソッドは、書かれていなくても、あらかじめすべて持っていることになります。
 repaint()メソッドはその中の一つですね。

>img =(new BufferToImage((VideoFormat)buf.getFormat()).createImage(buf));
>ここでのimgはjpgなんですか??

 imgは、Imageクラスのインスタンスです。
 Imageクラスは抽象クラスなので、実際の具象クラスは、なんなのかJMFに詳しくないのでわからないのですが、どっちにしろ、中身は生のピクセルデータの集合でしょうから、jpgのような圧縮はされてないと思いますよ。

投稿日時 - 2005-11-22 17:25:50

補足

返事遅れてもうしわけありません。

PecoPlusさんありがとうございます。

継承ですか、初歩を忘れてしまってました。

さらに質問を追加なのですが、imageクラスのインスタンスimgをストリームやソケットを使って別なところに送ることは可能なのでしょうか??

わかる方またよろしくお願いします。

投稿日時 - 2005-11-27 02:18:17

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(1)

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-