Аудиофайлы с японскими именами файлов не воспроизводятся в Firefox - PullRequest
2 голосов
/ 12 мая 2011

У меня есть список словарного запаса (например, http://nihongoup.com/vocabulary/animals/), где каждое слово связано с аудиофайлом, имя которого состоит из кандзи для слова (первый столбец в списке) и оно читается на хирагане ( второй столбец). Например, аудиофайл для called называется 動物 _ ど う ぶ つ (mp3 и wav).

Код аудио кнопки:

<span onclick="playAudio('/files/audio/words/動物_どうぶつ');" class="btn-audio"></span>

JavaScript, который встраивает аудиофайл:

var audioEmbed = null;
function playAudio(which)
{
    if (audioEmbed)
    {
        document.body.removeChild(audioEmbed);
        audioEmbed.removed = true;
        audioEmbed = null;
    }  
    audioEmbed = document.createElement("audio");
    var mp3Embed = document.createElement("source");  
    mp3Embed.setAttribute("src", which + ".mp3");
    mp3Embed.setAttribute("type", "audio/mpeg");
    audioEmbed.appendChild(mp3Embed); 
    var wavEmbed = document.createElement("source");  
    wavEmbed.setAttribute("src", which + ".wav");
    wavEmbed.setAttribute("type", "audio/x-wav");
    audioEmbed.appendChild(wavEmbed); 
    audioEmbed.setAttribute("autoplay", true);
    audioEmbed.removed = false;
    document.body.appendChild(audioEmbed);
}

Почему-то звук воспроизводится нормально во всех браузерах, кроме Firefox. Если я изменю имя файла на что-то, написанное латинскими буквами, звук тоже будет звучать нормально. Это ошибка в Firefox и есть ли способ решить эту проблему? Спасибо!

Ответы [ 2 ]

3 голосов
/ 13 мая 2011

Похоже, что эти файлы WAV кодируются как 24-битный моно PCM.WAV-декодер Firefox поддерживает только 8-битные и 16-битные кодировки PCM, поэтому он не может воспроизводить эти файлы.См. https://bugzilla.mozilla.org/show_bug.cgi?id=524109

Это не должно быть связано с именем файла;возможно, латинское имя файла, которое вы тестировали, указывало на файл WAV с другой кодировкой?

«Простое» решение заключается в преобразовании всех задействованных файлов WAV в 16-разрядную PCM ...

1 голос
/ 13 мая 2011

Попробуйте функцию JavaScript encodeURI (), например:

    var mp3Embed = document.createElement("source");  
    mp3Embed.setAttribute("src", encodeURI(which + ".mp3"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...