2017-03-03 16 views
1

私のプログラムは、WAVファイルにマイクの音声を録音しながら、AVIファイルにスクリーンキャプチャビデオを行っています。完成したら、2つを1つのファイルにまとめる(基本的にWAVファイルをオーディオとしてビデオに追加する)。AVIとWAVファイルをクライアントサイドのJAVAだけで結合する方法は?

は、私は次のコードでキャプチャ画面を行う(ScreenRecorderクラスはorg.monte.screenrecorderからです):私はあなたがすべての形式を見ることができます(このようにそれを行うオーディオ録音のために

GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment(). 
    getDefaultScreenDevice().getDefaultConfiguration(); 

Format fileFormat = new Format(MediaTypeKey, MediaType.FILE, MimeTypeKey, MIME_AVI); 
Format screenFormat = new Format(MediaTypeKey, MediaType.VIDEO, 
        EncodingKey, ENCODING_AVI_MJPG, 
        CompressorNameKey, ENCODING_AVI_MJPG, 
        DepthKey, (int)24, 
        FrameRateKey, Rational.valueOf(15), 
        QualityKey, 1.0f, 
        KeyFrameIntervalKey, (int) (15 * 60)); 
Format mouseFormat = new Format(MediaTypeKey, MediaType.VIDEO, EncodingKey,"black", 
FrameRateKey, Rational.valueOf(30)); 
screenRecorder = new ScreenRecorder(gc, fileFormat, screenFormat, mouseFormat, null); 

、パラメータ等) JMF(javax.media.Manager、それはcreateRealizedProcessorで死ぬ) Xuggle(com.xuggle.mediatoolとcom.xuggle:

float sampleRate = 44100; 
int sampleSizeInBits = 16; 
int channels = 2; 
boolean signed = true; 
boolean bigEndian = true;  
AudioFormat format new AudioFormat(sampleRate, sampleSizeInBits, channels, signed, bigEndian); 
DataLine.Info info = new DataLine.Info(TargetDataLine.class, format); 

// checks if system supports the data line 
if (!AudioSystem.isLineSupported(info)) { 
    System.out.println("Line not supported"); 
    System.exit(0); 
} 
line = (TargetDataLine) AudioSystem.getLine(info); 
line.open(format); 
line.start(); // start capturing 

System.out.println("Start capturing..."); 

AudioInputStream ais = new AudioInputStream(line); 

System.out.println("Start recording..."); 

// start recording 
AudioSystem.write(ais, fileType, wavFile); 

私は無駄に以下の溶液を、試みました。 xuggler)

入力形式が気に入らないために機能しないと確信しています。

はい、私は簡単にコマンドラインまたはサーバー上でFFMPEGでマージできますが、それは私にとっては良くないです、私はクライアント側のJAVAソリューションが必要です(私は本当にFFMPEGをインストールするようにユーザーに頼むことはできませんRuntime.getRuntime()。execなどで呼び出すことができます。

答えて

1

あなたと同様の目的で使用されているvlcjライブラリをお試しください。

http://caprica.github.io/vlcj/

あなたはこのライブラリはあなたを提供しています読んでみてください、同時に別々の2を再生したり、他の方法を試すことができます。また、このライブラリで録音することもできます。

+0

ありがとう、私はこれを試してみましょう! – KBalazs

関連する問題