Аудио файлов в различные форматы с помощью JavaScript
Я использую следующий код для воспроизведения звукового файла:
var audio = new Audio();
audio.src = 'somePath/filename.ogg';
audio.volume = 10;
audio.autoPlay = false;
audio.preLoad = true;
// ...
audio.play();
И это хорошо работает. Однако некоторые браузеры могут не поддерживать формат ogg,поэтому я хочу добавить формат mp3 в качестве альтернативы. Но как это сделать с помощью javascript?
Для справки, вот как это будет выглядеть в чистом HTML5, когда вы предлагаете несколько форматов:
<audio volume="10" preload="auto">
<source src="filename.ogg" type="audio/ogg">
<source src="filename.mp3" type="audio/mpeg">
</audio>
Таким образом, в основном вместо установки audio.src
мне нужно будет добавить <source>
элементы к объекту Audio
. Но как мне это сделать? Есть что-нибудь вроде new Source()
в javascript, что мне нужно использовать здесь, что я могу как-то добавить к audio
?
Бонусный вопрос: если браузер не поддерживает ни один из предложенных исходных форматов, могу ли я каким-то образом выполнить какой-то пользовательский код, например, напечатать сообщение пользователю, сказав, что их браузер отстой? :)
1 ответ:
Возможно, не совсем то, что вы имели в виду, однако вы могли бы достичь этого с помощью DOM API?
// Create audio instance with different source times by means of the DOM API function createAudio(sourceData) { const audio = document.createElement('audio') // audio.preload = 'auto', Redundant as source children are dynamically created audio.volume = 10 audio.style.display = 'none' // Iterate each sourceInfo of input sourceData array for(var sourceInfo of sourceData) { const source = document.createElement('source') source.src = sourceInfo.src source.type = sourceInfo.type // Append each source to audio instance audio.appendChild(source) } document.appendChild(audio) // Update, forgot this - thanks @Kaiido! audio.load() return audio } // Usage createAudio([ { src : 'filename.ogg', type : 'audio/ogg' }, { src : 'filename.mp3', type : 'audio/mpeg' }, ])