2011-01-21 21 views
13

HTML5 ses nesnesini kullanarak web tarayıcıları aracılığıyla onlara erişebilmeleri için kullanıcının ses dosyalarını akışlandıracak yerel bir sunucu geliştiriyorum. Bu dosyalar kullanıcının bilgisayarında olduğundan, dosyaların yüklendiklerinde tamamen tamponlanmasını beklerim, ancak bazı büyük dosyalar için şarkılar yolun bir kısmına gider, sonra durur ve bir süre sonra arabelleğe almaya devam eder.Bir HTML5 ses öğesinin tamamını bir parçayı tamponlamak için nasıl zorlayabilirim?

Sorum şu: Ses nesnesini tüm şarkıyı bir kerede tamponlamak için nasıl zorlayabilirim? Bunu javascript'ten yapabilir miyim, ses nesnesinde bir öznitelik ayarlamak zorunda mıyım yoksa yapabileceğim başka bir şey var mı?

cevap

1

Ön yük = "otomatik" özniteliğini ayarlayabilirsiniz. Hiçbir şey yapması garanti edilmez, ancak kullanıcı aracısının uzak uç için endişe duymadan istediği kadar tampon vermesi gerektiği söylenir.

function load() { 
    a.play(); 
    setTimeout("a.pause()", 10); 
} 

dosyayı oynayın ve ardından tarayıcı tüm şarkı tamponlayacaktır, 10ms daha sonra pause: buldum http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#attr-media-preload

6

çözüm bu oldu.

+7

setTimeout (a.pause, 10) senin, emin fonksiyonu herhangi bir değişken geçmediğine çalışır iyi karma –

+1

olduğunu. Ama neden iki yöntem arasında ileri geri geçiş yapmaktan rahatsız oluyorsunuz? –

+11

@DrJokepu Aslında bu işe yaramazdı, çünkü bu işlevin içeriğini kaybedersiniz. Daha iyi: 'setTimeout (a.pause.bind (a), 10)' – nickf

3

load() yöntemini kullanabilirsiniz. Bu temel olarak preload="auto"'u zorlar. Ama muhtemelen her şeyi bozmaz.

Sesin mobil aygıtlarda önceden yüklenmiş olmadığı (preload=auto ile bile) sorunu vardı, ancak bu yöntem işe yaradı.

http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#dfnReturnLink-2

Başka bir seçenek de ikili blob olarak bir XMLHttpRequest üzerinden veri yüklemek ve blob URI'siyle <audio> elementin src niteliğini ayarlamaktır.

(Ben şahsen değil gerçekten oyun gibi/kesmek duraklatmak.)

İlgili konular