-1

У меня есть mp3-файлы, хранящиеся в Google App Engine Cloud Storage, и я хочу получить их продолжительность. Я сделал этот код с помощью одного парня здесь, но, к сожалению, класс AudioSystem не работает с облачным хранилищем приложений Google App Engine. Кто-нибудь знает, как это сделать?Получение mp3-времени, хранящегося в Google App Engine, облако хранения

ListResult lr = gcsService.list(mybucketname, ListOptions.DEFAULT); 
while (lr.hasNext() && playlistLength > 0) { 
ListItem li = lr.next(); 
String filename = li.getName(); 
GcsService gcsService = 
GcsServiceFactory.createGcsService(RetryParams.getDefaultInstance()); 
GcsInputChannel readChannel = gcsService.openPrefetchingReadChannel(new GcsFilename(mybucketName, fileName), 0, 1024 * 1024); 
AudioInputStream audioInputStream; 
try (InputStream in = Channels.newInputStream(readChannel)) { 
audioInputStream = AudioSystem.getAudioInputStream(in); 
} 
long frames = audioInputStream.getFrameLength(); 
double durationInSeconds = (frames+0.0)/format.getFrameRate(); 
playlistLength-=(int)(durationInSeconds)/60; 

Здесь ошибка возвращается:

Error for /hello java.lang.NoClassDefFoundError: javax.sound.sampled.AudioSystem is a restricted class. 
Please see the Google App Engine developer's guide for more details. 
at com.google.apphosting.runtime.security.shared.stub.javax.sound.sampled.AudioSyst‌​em.<clinit>(AudioSystem.java) 
+0

Что значит «не работает»? нам нужно больше информации. – Patrice

+1

Это все, что у меня есть из трассировки стека: Ошибка для/hello java.lang.NoClassDefFoundError: javax.sound.sampled.AudioSystem - это ограниченный класс. Дополнительную информацию см. В руководстве разработчика Google App Engine. – davidmoshko

+0

, то ..... вы видели руководство разработчика движка Google для получения более подробной информации, прежде чем приходить сюда? :) – Patrice

ответ

0

Заглядывая в вопрос и док here, есть хороший шанс, что ваша проблема не разрешима с этой библиотекой, поскольку в настоящее время ограничен, потому что это делает какой-то системный вызов, который платформа не позволит вам делать.

У вас есть несколько доступных решений. Я бы посоветовал при загрузке файла загрузить объект в хранилище данных, содержащее метаданные, и получить его вместо этого.

Вы также можете сами проанализировать файл и прочитать его продолжительность (mp3 - довольно простой формат, как указывает Igor Artamonov).