Бесшовные цикл видео с видео просмотр



У меня есть следующий код, чтобы взять видео в качестве необработанного ресурса, запустить видео и зациклить его, но мне нужно, чтобы видео плавно зацикливалось, когда дело доходит до конца клипа и снова запускает клип переход между вызывает мерцание на долю секунды, что я действительно не могу иметь для своего приложения.



public class Example extends Activity {
VideoView vv;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

vv = (VideoView)findViewById(R.id.VideoView01);

//Video Loop
vv.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
vv.start(); //need to make transition seamless.
}
});

Uri uri = Uri.parse("android.resource://com.example/"
+ R.raw.video);

vv.setVideoURI(uri);
vv.requestFocus();
vv.start();
}
}


клип длиной всего 22 секунды, но был создан, чтобы быть бесшовным, так что можно работать без задержки.

443   6  

6 ответов:

попробуйте этот, он будет работать 100%


videoView.setOnPreparedListener(new OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        mp.setLooping(true);
    }
});

пауза для базового MediaPlayer для обновления буферов. Сколько времени это займет, будет зависеть от ряда факторов, многие из которых находятся вне вашего контроля (например, скорость процессора, скорость бортовой флэш-памяти).

один вы можете контролировать, чтобы получить видео из ресурса и в файловой системе. Ресурсы хранятся в APK, который является ZIP-файлом, поэтому извлечение видео таким образом, вероятно, занимает дополнительное время.

возможно, Вам придется переключаться от VideoView и использовать SurfaceView С MediaPlayers, чередуя их -- один играет, а другой готовится, поэтому, когда игра заканчивается, вы можете переключиться на нового игрока. Я не пробовал этого, и поэтому я не знаю, каковы могут быть последствия. Однако я знаю, что этот метод часто используется для воспроизведения звука для перехода от одного клипа к другому.

Не уверен, что это поможет годы спустя, но я использовал

vv.start();
vv.setOnCompletionListener ( new MediaPlayer.OnCompletionListener() {

 @Override 
  public void onCompletion(MediaPlayer mediaPlayer) {   
    vv.start();
  }
});

и он имеет бесшовную петлю

немного поздно, но по какой причине вы не можете использовать следующее?

MediaPlayer.setLooping(true);

ответ на это-удалить аудио из видео и преобразовать его в .ogg файл, который может быть легко зациклен, а затем использовать видео без звука, чтобы зациклиться, и это работает.

вот ответ друзья, вы должны использовать vv.resume на setOnCompletionListener класс

[https://stackoverflow.com/a/27606389/3414469][1]

Comments

    Ничего не найдено.