2012-11-05 20 views
7
yılında

ardından kod Chrome (22.0) 'de değil Safari (6.0)' de Safari'deYükleme ses Safari

<!DOCTYPE html> 
<html> 
<head> 
<script> 
function onGo(e) { 
    var fr = new FileReader(); 
    var file = document.getElementById("file").files[0]; 
    fr.onload = function(e) { 
     var data = new Uint8Array(e.target.result); 
     var blob = new Blob([data], {type: 'audio/mpeg'}); 
     var audio = document.createElement('audio'); 
     audio.addEventListener('loadeddata', function(e) { 
      audio.play(); 
     }, false); 
     audio.addEventListener('error', function(e) { 
      console.log('error!', e); 
     }, false); 
     audio.src = webkitURL.createObjectURL(blob);  
    }; 
    fr.readAsArrayBuffer(file); 
} 
</script> 
</head> 
<body> 
    <input type="file" id="file" name="file" /> 
    <input type="submit" id="go" onclick="onGo()" value="Go" /> 
</body> 
</html> 

çalışır başarısız ne geri arama (loadeddata ne de hata) olarak adlandırılır. Kullanılan içerik, normal olarak ses etiketiyle çalınan bir mp3 dosyasıdır. Safari için özel bir ihtiyaç var mı?

+0

Bkz http://stackoverflow.com/questions/4201576/html5-audio-files-fail-to-load-in-safari Bu bir cevap sağlamaz sorunu – cubitouch

cevap

0

Bazen, HTML5 sesleri herhangi bir neden olmadan yüklenmeyi durdurabilir. Medya Olaylarına (http://www.w3schools.com/tags/ref_eventattributes.asp) bir göz atacak olursanız, "onStalled" adlı bir olay görürsünüz, "Tarayıcı herhangi bir nedenle medya verilerini getiremiyorsa çalıştırılacak komut dizisidir" ve Bu sizin için yararlı olması gerektiği görünüyor.

Böyle bir şey, o etkinlik için dinleme ve gerekirse dosyayı yeniden deneyin:

audio.addEventListener('onstalled', function(e) { 
     audio.load(); 
    }, false); 

Ben yardımcı umut!

0

Aynı sorunu yaşıyorum ve bunu birkaç gün önce giderdim. Bu diğer yazı belirtilen gibi pwray, Safari medya istekleri için dosya uzantılarını gerektirir: Ben, bir dosyaya benim blob kurtarmaya çalıştı file.mp3 olarak adlandırdı ve Safari yük başardı

HTML5 Audio files fail to load in Safari

Bu şekilde ses, ancak uzantı (sadece "dosya") olması için dosyayı yeniden adlandırdıktan sonra, yüklenmedi. Ben Safari'de başka bir sekmede blob oluşturulan url denedik : video hemen "bilinmeyen" adlı bir dosya indirmek

url = webkitURL.createObjectURL(blob); 

ama (aynı zamanda Mac'te) Chrome'da aynı şeyi çalıştığımızda, onu Dosya içeriğini tarayıcıda gösterdi (mp3 dosyaları ID3 ile başlıyor, sonra okunamayan karakterler bir demet). genellikle şuna benzer, çünkü ben bir uzantısı olması blob'un yapılan url zorlamak nasıl henüz çözemedim:

blob:https://example.com/a7e38943-559c-43ea-b6dd-6820b70ca1e2 

yüzden bunun sonu bir oturum değişkeni benziyor.

Burada sıkışıp kaldım ve burada bazı akıllı insanlardan bir çözüm görmek istiyorum. sayesinde Steven

+0

çözmek için görünüyor soru. Yeterli [itibara] sahip olduğunuz zaman (https://stackoverflow.com/help/whats-reputation) herhangi bir gönderiye yorum yapabilirsiniz (https://stackoverflow.com/help/privileges/comment); bunun yerine, [askerden açıklama istemeyen cevaplar verin] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- i-do-yerine). - [Yorum yaz] (/ review/düşük kalite-mesajlar/17880680) –

+0

Elbette, ancak önce yorum olarak göndermek istedim ve yapamadım, bu yüzden bir cevap olmasa bile cevabımı gönderdim Sorun giderme konusunda yardımcı olacak bazı ek bilgiler sağlayabilir. – Steven

+0

Bu yüzden bu konuda çok fazla araştırma yaptım ve Safari'nin sadece blobtan gelen sesi çalamadığı anlaşılıyor, çünkü Safari kaynağı tanımlamak için bir uzantı (.mp3) arıyor, aksi halde "Error" yazıyor. ses elemanı.Blob bu satırı içeren bir URL'ye dönüştürdükten sonra: 'audio.src = webkitURL.createObjectURL (blob);' , audio.src şunun gibi görünecektir: 'blob: https: //example.com/a7e38943-559c blob: -43ea-6820b70ca1e2' b6dd ve ben aynı sorun var bir uzantısı – Steven