Добавить к существующему файлу, не перезаписывая его
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();
}
}
- Как я могу использовать этот класс, чтобы открыть более одной ссылки, воспроизвести их одну за другой и сохранить их в один файл, который называется фраз.mp3?
- Я хочу, чтобы этот класс взял ArrayList или массив String и открыл каждый элемент в новом URL, чтобы получить звук, а затем сохранить их все вместе в файл.
- чтобы запустить этот класс, вам нужна библиотека с именем jl1.0.jar, которую вы можете скачать по ссылке ниже: введите описание ссылки здесь
1 ответ
Вам нужно использовать код, предназначенный для объединения потоков MP3. Формат файла MP3 не только поддерживает конкатенацию файлов.
Проверьте: Каков наилучший способ объединить mp3 файлы?