Бесшовные цикл видео с видео просмотр
У меня есть следующий код, чтобы взять видео в качестве необработанного ресурса, запустить видео и зациклить его, но мне нужно, чтобы видео плавно зацикливалось, когда дело доходит до конца клипа и снова запускает клип переход между вызывает мерцание на долю секунды, что я действительно не могу иметь для своего приложения.
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 секунды, но был создан, чтобы быть бесшовным, так что можно работать без задержки.
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файл, который может быть легко зациклен, а затем использовать видео без звука, чтобы зациклиться, и это работает.
Comments