Аудио плейлисты – Поддержка нескольких файлов?

Я знаю, что при загрузке аудиофайла (mp3) на пост WordPress я могу встроить плеер. Затем я могу отредактировать вложение, чтобы также включить ссылку на версию файла ogg для поддержки Firefox. Кажется, я не могу найти документацию для того, чтобы делать то же самое с аудио-плейлистом. При создании плейлиста с использованием создателя плейлистов в WordPress создается то, что в конечном итоге создается, это песочный чек с идентификаторами аудиофайлов. Могу ли я иметь плейлист, в котором есть как mp3, так и ogg?

Нет, он не поддерживается в настоящее время в основном плейлисте, как я его понимаю.

Ниже приведены лишь некоторые приблизительные идеи:

Внутри WPPlaylistView.playCurrentSrc() в файле wp-playlist.js мы имеем:

 this.mejs.setSrc( this.playerNode.attr( 'src' ) ); 

Это в настоящее время только для одного источника.

Я проверил определение srcSet() в MediaElment.js и нашел :

 // This can be a url string // or an array [{src:'file.mp4',type:'video/mp4'},{src:'file.webm',type:'video/webm'}] setSrc: function (url) { 

Таким образом, похоже, что в библиотеке MediaElment.js имеется поддержка нескольких файлов.

Тестирование идей

Если бы у нас были атрибуты mp3 и ogg , тогда массив мог бы выглядеть так:

 this.mejs.setSrc( [ { src:this.playerNode.attr( 'mp3' ), type:'audio/mp3'}, { src:this.playerNode.attr( 'ogg' ), type:'audio/ogg'} ] ); 

Чтобы проверить это, у нас может быть версия ogg для каждого mp3 файла в списке воспроизведения. Затем мы могли бы добавить этот элемент массива:

 src:this.playerNode.attr( 'src' ).replace( '.mp3', '.ogg' ), type:'audio/ogg'} 

в исходный массив.

Я не уверен, что можно переопределить только метод WPPlaylistView.playCurrentSrc() или расширить WPPlaylistView Backbone WPPlaylistView .

Для тестирования можно было бы, например, удалить основной файл wp-playlist.js и вставить вместо него модифицированную версию.

Другим подходом может быть поиск способа настройки проигрывателя через объект MediaElementPlayer или с некоторыми другими обходными методами JavaScript.

Надеюсь, вы сможете исследовать это дальше 😉