附加到现有文件而不覆盖它

时间:2015-02-26 19:07:58

标签: java append outputstream fileinputstream fileoutputstream

import java.net.*;
import java.io.*;
import javazoom.jl.player.Player;


class MP3 {
// the javazoom player
static Player player;

// this is where the audio file is saved
static String filename = "sentence.mp3";

public static void speak(String sentenses) {
    try{    
            String sentence=sentenses;

            sentence = URLEncoder.encode(sentence, "UTF-8");

            // contact Google TTS services
        URL url = new URL("http://translate.google.com/translate_tts?tl=en&q=" + sentence);

            HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
            urlConn.addRequestProperty("User-Agent", "Mozilla");
            InputStream audioSrc = urlConn.getInputStream();
            DataInputStream read = new DataInputStream(audioSrc);

            // create the audio file
            OutputStream outstream = new FileOutputStream(new File(filename));//cc
            byte[] buffer = new byte[1024];
            int len;
            while ((len = read.read(buffer)) > 0) {
                outstream.write(buffer, 0, len);
            }
            outstream.close();

            // javazoom takes over now
            new MP3().play(filename);

    }catch(Exception e){
           System.out.println(e.getMessage());}
}

        public static void speakFr(String sentenses) {
    try{    
            String sentence=sentenses;

            sentence = URLEncoder.encode(sentence, "UTF-8");

            // contact Google TTS services
            URL url = new URL("http://translate.google.com/translate_tts?tl=fr&q=" + sentence);

            HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
            urlConn.addRequestProperty("User-Agent", "Mozilla");
            InputStream audioSrc = urlConn.getInputStream();
            DataInputStream read = new DataInputStream(audioSrc);

            // create the audio file
            OutputStream outstream = new FileOutputStream(new File(filename));
            byte[] buffer = new byte[1024];
            int len;
            while ((len = read.read(buffer)) > 0) {
                outstream.write(buffer, 0, len);
            }
            outstream.close();

            // javazoom takes over now
            new MP3().play(filename);

    }catch(Exception e){
           System.out.println(e.getMessage());}
}


// play the MP3 file to the sound card
public static void play(String filename) {

    try {
        FileInputStream fis     = new FileInputStream(filename);
        BufferedInputStream bis = new BufferedInputStream(fis);
        player = new Player(bis);
    }
    catch (Exception e) {
        System.out.println("Problem playing file " + filename);
        System.out.println(e);
    }

    // run in new thread to play in background
    new Thread() {
        public void run() {
            try { player.play(); }
            catch (Exception e) { System.out.println(e); }
        }
    }.start();
}

}
  1. 如何使用此类打开多个链接逐个播放它们  并将它们保存在一个名为sentences.mp3?
  2. 的文件中
  3. 我希望这个类获取一个ArrayList或String数组,并打开一个新URL中的每个元素来获取声音,然后将它们全部保存在一起。
  4. 为了能够运行这个类,你需要一个名为 jl1.0.jar 的库 您可以从以下链接下载: enter link description here

1 个答案:

答案 0 :(得分:0)

您需要使用旨在将MP3流连接在一起的代码。 MP3文件格式不仅支持文件串联。

退房: What is the best way to merge mp3 files?