Saya memiliki kode berikut untuk mengambil video sebagai sumber mentah, memulai video dan mengulangnya tetapi saya membutuhkan video untuk mengulang dengan mulus seperti sekarang ketika sampai pada akhir klip dan memulai klip lagi transisi antara menyebabkan a berkedip selama sepersekian detik, yang benar-benar tidak dapat saya miliki untuk aplikasi saya.
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();
}
}
Klip hanya berdurasi 22 detik tetapi dibuat dengan mulus sehingga memungkinkan untuk bekerja tanpa penundaan.
android
android-videoview
SamRowley
sumber
sumber
Tidak yakin apakah ini membantu bertahun-tahun kemudian, tapi saya dulu
vv.start(); vv.setOnCompletionListener ( new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mediaPlayer) { vv.start(); } });
dan memiliki loop yang mulus
sumber
Jeda ini untuk mendasari
MediaPlayer
menyegarkan buffernya. Berapa lama waktu yang dibutuhkan akan bergantung pada sejumlah faktor, banyak di antaranya berada di luar kendali Anda (misalnya, kecepatan CPU, kecepatan penyimpanan flash on-board).Satu yang dapat Anda kendalikan adalah mengeluarkan video Anda dari sumber daya dan masuk ke sistem berkas. Resource disimpan dalam APK, yang merupakan file ZIP, jadi mengekstrak video dengan cara ini mungkin membutuhkan waktu lebih lama.
Anda mungkin perlu beralih dari
VideoView
dan menggunakan aSurfaceView
dengan duaMediaPlayers
, bergantian di antara keduanya - satu dimainkan sementara yang berikutnya sedang bersiap, jadi ketika permainan berakhir, Anda dapat beralih ke pemain baru. Saya belum mencobanya, jadi saya tidak tahu apa konsekuensinya. Namun, saya tahu bahwa teknik ini sering digunakan untuk pemutaran audio untuk beralih dari satu klip ke klip lainnya.sumber
Di Kotlin cukup gunakan
videoView.setOnPreparedListener { it.isLooping = true }
sumber
Sedikit terlambat, tetapi ada alasan mengapa Anda tidak dapat menggunakan yang berikut ini?
MediaPlayer.setLooping(true);
sumber
Jika Anda menggunakan Kotlin
videoView.setOnPreparedListener(object : MediaPlayer.OnPreparedListener { override fun onPrepared(mp: MediaPlayer?) { //Start Playback videoView.start() //Loop Video mp!!.isLooping = true; Log.i(TAG, "Video Started"); } });
Menggunakan bentuk singkat Arrow Expression
videoView.setOnPreparedListener { mp -> //Start Playback videoView.start() //Loop Video mp!!.isLooping = true; Log.i(TAG, "Video Started"); };
sumber
Jawaban untuk ini adalah untuk menghapus audio dari video dan mengubahnya menjadi
.ogg
file yang dapat diputar dengan mulus dan kemudian menggunakan video tanpa audio untuk memutar dan ini berfungsi.sumber
Ini jawabannya teman-teman, yang harus Anda gunakan
vv.resume
disetOnCompletionListener
kelas[ https://stackoverflow.com/a/27606389/3414469][1]
sumber