2012年7月11日水曜日

末尾の改行コード削除

正規表現で末尾の文字列を削除する。
  Pattern pattern = Pattern.compile("\n$");
  
  Matcher matcher = pattern.matcher("Hello World. Hello World.\n");
  
  String strResult = matcher.replaceAll("");
  
  System.out.println(strResult);

SyntaxHighlighter のバージョンアップ

SyntaxHighlighter を Version: 1.5.1 から version 3.0.83 にバージョンアップしてみる。
どちらのバージョンからの文法でも動くようにする。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <title>dp.SyntaxHighlighter Tests</title>
  <script type="text/javascript" src="scripts3/shCore.js"></script>
  <script type="text/javascript" src="scripts3/shLegacy.js"></script>
  <script type="text/javascript" src="scripts3/shBrushJava.js"></script>
  <link type="text/css" rel="stylesheet" href="styles3/shCoreDefault.css"/>
 </head>
 <body>
  <pre name="code" class="java">
function helloSyntaxHighlighter()
{
 return "hi!";
}
</pre>

  <pre class="brush: java;">
function helloSyntaxHighlighter()
{
 return "hi!";
}
</pre>


  <script type="text/javascript">
   SyntaxHighlighter.all();
   dp.SyntaxHighlighter.HighlightAll('code');

  </script>
 </body>
</html>

function helloSyntaxHighlighter()
{
 return "hi!";
}

function helloSyntaxHighlighter()
{
 return "hi!";
}


2012年7月3日火曜日

ライブ配信受信側のJavaプログラム:JMF

送信側は JMStudio を使って、USBカメラの映像を送信する。
送信の設定は ライブ配信テスト:JMF で確認。

import javax.media.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

/** Media Frame */
public class ReceiverTest extends JFrame {

    private Player player = null;
    private InputPanel ipanel;
    private Component canvas;
    private Component panel;
    private static final int PORT = 22224;

    public ReceiverTest() {

        super( "RTP Receiver" );
        ipanel = new InputPanel();
        getContentPane().add( ipanel, "North" );
        pack();
    }

  /** start play */
    public void startPlayer() {
        try {
            MediaLocator locator
              = new MediaLocator( "rtp://" + ipanel.host.getText()
                         + ":" + PORT + "/video" );
            player = Manager.createRealizedPlayer( locator );
            canvas = player.getVisualComponent();
            if ( canvas != null) {
                 getContentPane().add( canvas, "Center" );
            }
            panel = player.getControlPanelComponent();
            if ( panel != null) {
                 getContentPane().add( panel, "South" );
            }
            pack();
            player.start();
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }

  /** start here */
    public static void main(String[] args) {
        try {
            ReceiverTest frame = new ReceiverTest(); 
            frame.show();
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }

  /** Input receive host name, port number */
    class InputPanel extends JPanel implements ActionListener {

         public JLabel label = new JLabel( "Transmitter Adress:" );
         public JTextField host = new JTextField( "", 16 );
         public JButton receive = new JButton( "Receive" );

         InputPanel() {

              add( label );
              add( host );
              add( receive );
              receive.addActionListener( this );
         }

      /** Event Processing */
         public void actionPerformed( ActionEvent evt ) {

              if( evt.getSource() instanceof JButton ) {
                  if( (JButton)(evt.getSource()) == receive ) {
                      startPlayer();
                  }
              }
          }
     }
}



ライブ配信テスト:JMF

JMF をインストールしたときに入っている、JMStudio でライブ配信テストをやってみる。

怒涛のめもめもリンク集
JMF: JMStudioでRTP試し に詳しく解説してある。

JMStudio で送信側と受信側のテストが出来る。

一台のパソコンで送信側と受信側のテストをしてみる。

送信側の設定
JMStudio を起動させて、File から Transmit.. を選択する。


Caputure..をクリックする。
OK をクリックする
Next>> をクリックする。


Next>> をクリックする。

Finish をクリックする。

送信を確認する画面が表示される。


受信側の設定
JMStudio をもう一回起動させる。
File から Open RTP Session..をクリックする。


アドレスを入力して Open をクリックする。

送られた画像が表示された。

javaでUSBカメラを使う:JMF

JMF をインストールしたときに入っている、JMStudio でUSBカメラが利用できるか確認してみる。

JMStudio を起動させる。

ファイルから Cupture を選択する

OKをクリックする。

USBカメラの映像が表示される

USBカメラが利用出来る事が確認できたので、今度はJava プログラムから利用してみる。

import javax.media.*;
import javax.swing.*;

public class jmf {
    public static void main(String args[]) throws Exception {
        JFrame frame = new JFrame("ImageView");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Player player = Manager.createRealizedPlayer(new MediaLocator("vfw://0"));
        frame.setBounds(100, 100, 640, 480);
        frame.getContentPane().add(player.getVisualComponent());
        frame.setVisible(true);
        player.start();
    }
}

Eclipseにjar追加 C:\Program Files (x86)\JMF2.1.1e\lib の中のjar ファイルをEclipseの メニューのプロジェクト->プロパティー->Java のビルド・パス->ライブラリの外部Jarの追加ボタンから追加する。

プログラムを実行すると、カメラ映像が表示される。


2012年7月1日日曜日

JMFをWindows 7,64bit,Eclipseでインストール

1.jdk 32bit版のインストール
すでに64bit版がインストールしている場合でも、インストールする。

2.JMFをダウンロードしてくる。
ダウンロードサイト:http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-client-419417.html#7372-jmf-2.1.1e-oth-JPR

ダウンロードしたファイル:jmf-2_1_1e-windows-i586.exe


ダウンロードしたファイルをダブルクリックしてインストール。
解凍からインストールに進まない場合は、jdk 32bitのインストールが完了していない場合があります。

インストールが完了したらデスクトップにJMStudioのアイコンが表示される。




3.Eclipseにjar追加
C:\Program Files (x86)\JMF2.1.1e\lib の中のjar ファイルをEclipseの
メニューのプロジェクト->プロパティー->Java のビルド・パス->ライブラリの外部Jarの追加ボタンから追加する。