タグ: java

  • Galatea Project について

    私が関わっている音声対話ツールキット Galatea に関するご報告です。
    本記事は galatea-users ML に投稿した内容です。ご興味をお持ちの方はご参加をご検討いただければ幸いです。
    (さらに…)

  • JMC を使って Java で MP3 を再生する

    下記の記事

    を読んで、JavaFX のクラスを Java 言語から使うためのパターンがわかってきたので、Java Media Components を Java から使い MP3 ファイルを再生することに挑戦。やっと成功しました。

    ただし Windows XP で Java FX SDK 1.1 を C:\Program Files\JavaFX\javafx-sdk にインストールしています。

    JavaFX の機能は重要だがスクリプト言語は嫌い、という主張には同意できる点もあるのですが、下記の書き方がやたら冗長に感じるのも事実です。

    私としては、Java で過去に実装した資産をうまく再利用するためにこのテクニックを使ってみたいと思います。

    // Java MP3 Player using JavaFX JMC classes 
    // 2009-03-08 by nishimotz@gmail.com
    // based on work of Matt Hicks
    // http://www.matthicks.com/2009/02/i-hate-javafx-i-love-javafx.html
    //
    // Requirements (Eclipse 3.4.1)
    // To avoid 
    //   java.lang.UnsatisfiedLinkError: 
    //   com.sun.media.jmcimpl.plugins.directshow.DShowEngine.ndsInit()
    // add jmc.dll as follows:
    // Java -> Build Path -> User Library
    //   jmc-dll
    //   File : C:\Program Files\JavaFX\javafx-sdk\lib\desktop\jmc.dll
    //   Location : C:/Program Files/JavaFX/javafx-sdk/lib/desktop
    // Notes
    //   javafxgui.jar : for javafx.scene.media.* 
    package test;
    import java.io.IOException;
    import javafx.scene.Scene;
    import javafx.scene.media.Media;
    import javafx.scene.media.MediaPlayer;
    import javafx.scene.media.MediaView;
    import javafx.stage.Stage;
    public class MyMediaPlayer {
    public MyMediaPlayer() throws IOException {
    Media media = new Media(); {
    media.initialize$();
    String mediaUrl = "http://hoge.hoge/hoge.mp3";
    // String mediaUrl = "file:///C:/hoge/hoge.mp3";
    media.$source.set(mediaUrl);
    }
    MediaPlayer mediaPlayer = new MediaPlayer(); {
    mediaPlayer.$media.set(media);
    }
    MediaView mediaView = new MediaView(); {
    mediaView.$mediaPlayer.set(mediaPlayer);
    }
    Scene scene = new Scene(); {
    scene.impl_setWidth(100.0f);
    scene.impl_setHeight(100.0f);
    scene.$content.insert(mediaView);
    }
    Stage stage = new Stage(); {
    stage.$title.set("MyMediaPlayer");
    stage.$scene.set(scene);
    }
    mediaPlayer.play();
    }
    public static void main(String[] args) throws Exception {
    new MyMediaPlayer();
    }
    }
    

    参考までに、上記の元になった JavaFX の実装例はこちら:

    // based on http://gihyo.jp/dev/serial/01/javafx/0010?page=1
    import javafx.stage.Stage;
    import javafx.scene.Scene;
    import javafx.scene.Group;
    import javafx.scene.media.*;
    var mediaUrl:String = "http://hoge.hoge/hoge.mp3";
    var theWidth:Number = 100.0;
    var theHeight:Number = 100.0;
    var media = Media {
    source: mediaUrl
    };
    var mediaPlayer = MediaPlayer {
    media: media
    };
    Stage {
    title: "MP3 Player"
    scene: Scene {
    width: theWidth
    height: theHeight
    content: MediaView {
    mediaPlayer: mediaPlayer
    }
    }
    }
    mediaPlayer.play();
    
  • Windows Eclipse CVS sourceforge.jp

    Windows XP で Eclipse 3.4.1 の CVS クライアントを使って sourceforge.jp のアカウントで作業を。。

    anonymous ではなく sourceforge.jp のアカウントで commit ができるための設定をしました。

    最初に試したのは

    でしたが Windows ではうまくいかなかったので再度調査。

    をすこし手直ししたら成功しました。

    • 以下 PC のアカウントは nishi で SF.jp のアカウントは nishimoto という想定。

    まず Windows XP のコントロールパネル「システム」で環境変数の設定。

    HOME=c:/cygwin/home/nishi
    CVSROOT=nishimoto@sourceforge.jp:/cvsroot/galatea
    CVS_RSH=ssh
    
    [cygwin]
    $ cd
    $ ssh-keygen
    /home/nishi/.ssh/identity
    $ notepad .ssh/idendity.pub
    

    これを sourceforge.jp の Account Maitainance で CVS/SVN/SSH Shared Authorized Keys に追加。

    環境変数が反映されるように新しい cygwin コンソールで確認します。

    $ ssh -l nishimoto cvs.sourceforge.jp
    (omitted)
    You cannot execute anything here.
    Connection to cvs.sourceforge.jp closed.
    
    $ ssh -l nishimoto shell.sourceforge.jp
    Last login: Sat Nov  1 14:38:37 2008 from xxxxxxxxxxxxxxxxxxxx
    nishimoto@sf-usr-shell:~$ ls
    galatea
    nishimoto@sf-usr-shell:~$ logout
    Connection to shell.sourceforge.jp closed.
    

    環境変数が反映されるように Eclipse を新たに起動します。

    • Window – Prefefence – Team – CVS – Ext connection method
      • CVS_RSH : c:\cygwin\bin\ssh.exe
      • Parameter : -l {user} {host}
      • SSH2 (General – Network Connections – SSH2)
        • SSH2 home: C:\cygwin\home\nishi\.ssh
        • Private Keys: C:\cygwin\home\nishi\.ssh\identity
    • New – Project – Project from CVS – New repository location
    Host: cvs.sourceforge.jp
    Repo Path: /cvsroot/galatea
    User: nishimoto
    Pass: (empty)
    Conn.Type: extssh
    

    repository の中身が見えたので成功。

    上記リンクと少し違う手順が必要でしたが、参考になりました。感謝。