Сбой видео на SimpleVideoExoPlayerAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Сбой видео на SimpleVideoExoPlayer

Сообщение Anonymous »

Доброе утро, у меня возникли проблемы с воспроизведением видео с помощью exoplayer. Точнее, я пытаюсь создать приложение для Android, чтобы иметь возможность развернуть его на планшете Пеппера, которое взаимодействует с веб-сайтом, позволяющим создавать и загружать социальные истории с изображениями, видео и аудио. Мы проверили сайт, нет ли проблем с php, но ничего. Поэтому, пока я отлаживал приложение, я заметил, что когда мы запускаем социальную историю с присутствующим внутри видео, плеер загружается правильно, но через секунду плеер вылетает, в результате чего звук воспроизводится после возвращения на главный экран, а после это приводит к прекращению звука видео, что приводит к полному сбою всего приложения. Мы считаем, что это проблема состояния гонки, но мы не совсем уверены в этом, поскольку исключение, переданное нам отладкой, имеет тип RuntimeException. Ждём ваших советов и заранее благодарим! Ниже прикрепляю скрипт-обработчик

Код: Выделить всё

private void getParagraph() {
Log.d("prova", "valore array paragrafi: " +story.size());
Log.d("prova", "valore array immagini: " +imageList.size());
Log.d("prova", "prova bitmap: " + imageList.get(index));

if (imageList.get(index) != null) {
imageView.setBackgroundColor(255);
imageView.setImageBitmap(imageList.get(index));
} else if (!videoName.get(index).isEmpty()) { //SE IL NOMEVIDEO NELLA COLONNA DEL DATABASE E' PRESENTE
//SE NON SOSTITUISCO GLI SPAZI CON I CARATTERI %20, IL VIDEO NON VIENE VISUALIZZATO
String storyTableNoSpace = PepperStory.storyTitle;
storyTableNoSpace = storyTableNoSpace.replaceAll(" ", "%20");
Log.d("prova video", "prova stringa storyTableNoSpace: " + storyTableNoSpace);
String string = "https://pepper4socialstory.altervista.org/get_video2.php?table=" + storyTableNoSpace + "&id=" + index;
Log.d("prova video", "prova stringa connessione: " + string);
//String string = "https://pepper4storytelling.altervista.org/get_video2.php?table=" + PepperStory.storyTitle + "&id=" + index;
//Log.d("prova video", "prova stringa connessione: " + string);
imageView.setVisibility(imageView.INVISIBLE);
simpleVideoExoPlayer = new SimpleExoPlayer.Builder(this).build(); //null
videoView.setPlayer(simpleVideoExoPlayer);
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this, Util.getUserAgent(this, "app"));
MediaSource dataSource = new ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(Uri.parse(string));
videoView.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
videoView.setControllerHideOnTouch(true);
simpleVideoExoPlayer.prepare(dataSource);
simpleVideoExoPlayer.setPlayWhenReady(true);

//FIXME
simpleVideoExoPlayer.addListener(new Player.EventListener() {
@Override
public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
if(playbackState == Player.STATE_ENDED) {
Log.d("prova video", "IS PLAYING: " +simpleVideoExoPlayer.isPlaying());
Log.d("prova video", "SONO NEL LISTENER STATO FINITO");
//TODO: aggiunta adesso
if(simpleAudioExoPlayer == null || simpleAudioExoPlayer.isPlaying() == false) {
Log.d("flusso", "sono nel getParagraph dell'if dell'end simpleVideoPlayer");
nextParagraph.setVisibility(nextParagraph.VISIBLE);
imageView.setBackgroundColor(255);
videoView.setLayoutParams(new FrameLayout.LayoutParams(1, 1));
index = index +1;
imageView.setVisibility(imageView.VISIBLE);
nextParagraph.setVisibility(nextParagraph.INVISIBLE);
getParagraph();
}
}
}
});
} else {
imageView.setImageBitmap(null);
imageView.setBackgroundColor(Color.parseColor(color.get(index)));
}
if (!audioName.get(index).isEmpty()) { //SE IL NOMEAUDIO NELLA COLONNA DEL DATABASE E' PRESENTE
//SE NON SOSTITUISCO GLI SPAZI CON I CARATTERI %20, L'AUDIO NON VIENE RIPRODOTTO
String storyTableNoSpace = PepperStory.storyTitle;
storyTableNoSpace = storyTableNoSpace.replaceAll(" ", "%20");
Log.d("prova video", "prova stringa storyTableNoSpace: " + storyTableNoSpace);
String string = "https://pepper4socialstory.altervista.org/get_audio.php?table=" + storyTableNoSpace + "&id=" + index;
Log.d("prova video", "prova stringa connessione: " + string);
//String string = "https://pepper4storytelling.altervista.org/get_audio.php?table=" + PepperStory.storyTitle + "&id="  + index;
//Log.d("prova audio", "prova stringa connessione: " + string);
simpleAudioExoPlayer = new SimpleExoPlayer.Builder(this).build();
audioView.setPlayer(simpleAudioExoPlayer);
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this, Util.getUserAgent(this, "app"));
MediaSource dataSource = new ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(Uri.parse(string));
//audioView.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
audioView.setControllerHideOnTouch(true);
simpleAudioExoPlayer.prepare(dataSource);
simpleAudioExoPlayer.setPlayWhenReady(true);
simpleVideoExoPlayer.addListener(new Player.EventListener() {
@Override
public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
if (playbackState == Player.STATE_ENDED) {
Log.d("prova video", "IS PLAYING: " + simpleVideoExoPlayer.isPlaying());
Log.d("prova video", "SONO NEL LISTENER STATO FINITO");
// TODO: aggiunta adesso
if (simpleAudioExoPlayer == null || !simpleAudioExoPlayer.isPlaying()) {
Log.d("flusso", "sono nel getParagraph dell'if dell'end simpleVideoPlayer");
runOnUiThread(new Runnable() {
@Override
public void run() {
nextParagraph.setVisibility(View.VISIBLE);
imageView.setBackgroundColor(Color.WHITE); // Imposta il colore di sfondo bianco
videoView.setLayoutParams(new FrameLayout.LayoutParams(1, 1));
index = index + 1;
imageView.setVisibility(View.VISIBLE);
nextParagraph.setVisibility(View.INVISIBLE);
getParagraph();
}
});
}
}
}
});

}

startTalk();
}
Предполагая, что возникла проблема с гонкой, мы попытались использовать Syncronize(), когда он увеличивает индекс, но ничего.

Подробнее здесь: https://stackoverflow.com/questions/782 ... oexoplayer
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»