Я пытаюсь воспроизвести mp3 в html-контроле, передавая байты из преобразования mp3-файла из байтов, но он не воспроизводится полностью, он обрезается на 20% mp3s
Я пытался использовать преобразование байтов Base46 и другие преобразования.
этот код является частью ответа API Google text to voice
// Get the audio contents from the response
ByteString audioContents = syntehsizeResponse.getAudioContent();
// Write the response to the output file.
try (OutputStream outStream = new FileOutputStream("File_"+randomTime+".mp3")) {
outStream.write(audioContents.toByteArray());
}
//out.print(audioContents.toByteArray());
}
//ServletContext ct = getServletContext();
File imageFile = new File("File_"+randomTime+".mp3");
//InputStream input = ct.getResourceAsStream("F:/File_"+x+".mp3");
response.setHeader("Content-Type", getServletContext().getMimeType(imageFile.getAbsolutePath()));
response.setHeader("Content-Length", String.valueOf(imageFile.length()));
//response.setHeader("Content-Disposition", "inline; filename=\""+ imageFile + "\"");
FileInputStream is = new FileInputStream(imageFile);
byte[] buffer = new byte[(int)imageFile.length()]; // 32k buffer
int offset = 0;
while ( offset < buffer.length ) {
int count = is.read(buffer, offset, buffer.length - offset);
offset += count;
}
byte[] encoded = Base64.encodeBase64(buffer);
//String encodedFile = Base64.encodeBase64String(encoded);
String encodedString = new String(encoded);
response.getWriter().print(encodedString);
<div style="display:none">
<audio id="audio" controls>
<source id="test" src="" type="audio/mp3">
</audio>
</div>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
function convertTextToSpeech(){
$.ajax({
url: 'textToSpeech.jsp',
async: false,
data: { textSpeech: document.getElementById("txtSpeech").value },
success: function( data ) {
var audio = document.getElementById('audio');
var source = document.getElementById('test');
source.src = "data:audio/mp3;base64,"+data;
audio.load(); //call this to just preload the audio without playing
audio.play();
}
});
}
</script>
Он должен воспроизводить аудио в html Audio controller, но не может найти правильное решение.
Мне нужно только передать в другом формате, а не прямой физический файл.