2011-08-28 26 views
20

Başarılı bir MP4 video dosyası görüntüleyen bir uygulama oluşturuyorumButtonClick. Videonun URI'sini (uzak url) önceden tamponlamak veya önyüklemek istiyorum, böylece düğme tıklandığında videonun oynatılmasını geciktirmez. Hemen tıklatıp oynatılmasını istiyorum, bu nedenle uygulama başlatma ekranı üzerinde ön yükleme veya önbellekleme, uygun bir çözüm gibi görünüyor. Tek şey, nasıl olduğunu bilmiyorum. Tonlarca Android Kitabım var, ancak bunların hiçbiri arabelleğe alınmayı neredeyse hiç kapatmıyor ya da sadece sesi kaplıyor.Android uygulama geliştirmede Ön Yükleme veya Ön Tampon .mp4 videosu

Videoyu önceki bir etkinlikte nasıl arabelleğe alacağımı bilen var mı?

Teşekkürler.

+1

Sadece videonun bir bölümünü mi tamponlamak istiyorsunuz? Değilse, MP4'ü flash belleğe yükleyebilir ve bir dosya gibi oynatabilirsiniz. – braden

+0

Emin değilim, ama başlatmayı denediniz mi, hemen aramayı durdurun veya durun mu? –

+0

Hiç bir çözüm buldunuz mu? Bu cevap için –

cevap

0

Yerel Android Tarayıcı ortam dosyalarını (ses veya video) ara belleğe almaz, bu yüzden HTML5'te bunu yapmanın bir yolu yoktur. @ BradenV2'nin dediği gibi, dosyayı belleğe kopyalayabilirsiniz (App ise Phonegap'i kullanabilirsiniz).

2

Bunu, videoyu hazırlamak için MediaPlayer kullanabilirsiniz:

mediaPlayer = new MediaPlayer(); 
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
mediaPlayer.setOnPreparedListener(<implementation of MediaPlayer.OnPreparedListener>); 

mediaPlayer.setDataSource(dataSource); 
mediaPlayer.prepareAsync(); 

çağrı prepareAsync() videonuzu tamponlayacaktır mediaplayer sonra. MediaPlayer.OnPreparedListener.onPrepared(), mediaplayer'ın oynatılmaya hazır olup olmadığını size söyleyecektir. Böyle arka planda tamponlama kadar farklı devlet destekler http://developer.android.com/guide/topics/media/exoplayer.html

:

Sadece hazırlanmış bayrağı kontrol ve size butonuna tıkladığınızda mediaplayer.start() çağrı "onButtonClick"

+0

teşekkürler. Yaklaşan videoyu önbelleğe alacak bir video oynatma listesi oluşturmak istiyorum. Bunun için 2 MediaPlayers kullanmalı mıyım? Her videonun anlık olarak geçişi gibi. 2 oyuncu arasında dönüşüm yapmayı düşünüyordum. Bu yaklaşımı tavsiye eder misiniz? – codeshark

+0

Bu yaklaşımı yapabilir ya da görüntü almak için önceden indiren bir "Önyükleme Yardımcısı" sınıfı oluşturabilirsiniz. – leegor

+0

Video A oynatılıyorsa ve veri kaynağını B videosuna ayarlıyorum ve prepareAsync() öğesini çağırın, mediaPlayer'da A videosunu çalıştırmayı durdurur mu? Preload Helper sınıfına göre ikinci bir mediaPlayer kullanacak mı? Ayrıca, yeni ExoPlayer android sınıfını kullanma hakkındaki düşünceleriniz nelerdir? Teşekkürler! – codeshark

3

tarihinde medya çalmak için daha yüksek düzeyde sağlar ExoPlayer yayınlandı :

// 1. Instantiate the player. 
player = ExoPlayer.Factory.newInstance(RENDERER_COUNT); 
// 2. Construct renderers. 
MediaCodecVideoTrackRenderer videoRenderer = … 
MediaCodecAudioTrackRenderer audioRenderer = ... 
// 3. Inject the renderers through prepare. 
player.prepare(videoRenderer, audioRenderer); 

Kendi projemde kullandım ve oldukça verimli görünüyor. Ayrıca Google, basit bir demodan daha güçlü olan https://github.com/google/ExoPlayer/tree/master/demo/src/main/java/com/google/android/exoplayer/demo/full numaralı oyuncunun Tam Demo'yu yaptı.

+0

Bu cevap için teşekkürler Hugo. Bir video oynatma listesi uygulaması oluşturmak istiyorum. Videolar IP üzerinden olacak. Her videonun anlık olarak geçişi gibi. Bir video oynatılmadan önce, sonraki sonraki videoyu önyüklemek ister. Exoplayer'ın iki örneğini kullanmalı mıyım? Mümkün mü? Bu yaklaşımı tavsiye eder misiniz? – codeshark

+0

Bu exoplayer pek çok örneği desteklemiyor ama eminim ki bunu yapmanın bir yolu olmalı. ExoPlayer kullanmayı düşünürsünüz, github'da bir Sorun açabilirsiniz: https://github.com/google/ExoPlayer –