Как подменить файл звука на свой в HTML?
Суть моего вопроса была здесь:
Как найти источник звука уведомления на сайте?
Но теперь появился новый вопрос: как подменить файл звука уведомления на свой? Ссылка на него находиться в HTML каркасе сайта. Доступа к файлам сайта нет, то есть сделать надо через костыли какие-то.
Дополнительно:
переименовываете файл как исходный, копировать - вставить на вопрос заменить файл, отвечаете да - профит
Ответы:
1. Написать плагин, который будете запускать каждый раз, как будете открывать вкладку браузера.
2. В плагине реализовать код, который будет искать аудио плеер.
3. Берем src и в него подставляем свою ссылку.
Вот и все решение. Ну возможно имеется какой-то плагин для браузеров, но я такой не видел.
- Это единственный способ? Возможно есть что-то одноразовое, до первой перезагрузки страницы..
- Markella, одноразово - просто инструментами разработчика, о которых вы узнали в предыдущем вопросе, заменить. Либо руками найти в Инспекторе и там заменить, либо написть простой скрипт для этого и запускать его в консоли.
Если нужно конкретное решение - нужно больше конкретных деталей, а именно кусок кода где этот файл используется. От того как он используется - зависит способ того, как его менять. - Aetae,
<div class="offscreen"> <audio id="msg" preload="auto"> <source type="audio/mpeg" src="/msg.mp3"> <source type="audio/wav" src="/msg.wav"> <source type="audio/ogg" src="/msg.ogg"> <embed src="/msg.wav" type="audio/wav" autostart="0" autoplay="0" width="1" height="1" id="msg2" enablejavascript="1"> </audio> </div>
<div class="offscreen"> <audio id="msg" preload="auto"> <source type="audio/mpeg" src="/msg.mp3"> <source type="audio/wav" src="/msg.wav"> <source type="audio/ogg" src="/msg.ogg"> <embed src="/msg.wav" type="audio/wav" autostart="0" autoplay="0" width="1" height="1" id="msg2" enablejavascript="1"> </audio> </div>
Вот такой участок когда в каркасе сайта. Нужно заменить я так понимаю все 4 файла с разным расширением. Хотя судя по вкладке media проигрывается только mp3. Еще нюанс от куда брать заменённый файл, с локального хранилища можно? Или нужно на файлообменник какой-то залить.. Возможно есть небольшой скрипт для Tempermonkey? Для этого.
- Markella, достаточно поменять первый - проигрываться первый по порядку который поддерживает браузер.
С файлом сложнее, он должен хоститься на каком-то сайте, однако можно закодировать его в одну строчку data uri.
Код для замены простой: в консоли написать и нажать enterdocument.querySelector('source[src="/msg.mp3"]').src = "data:audio/mpeg;base64,<и т.д. то что получено в сервисе data uri>"
document.querySelector('source[src="/msg.mp3"]').src = "data:audio/mpeg;base64,<и т.д. то что получено в сервисе data uri>"
Если вы принципиально не можете поставить расширение с поддержкой пользовательских скриптов, которое будет автоматически запускать этот код за вас(например tampermonkey), то можно обойтись классической технологией букмарклетов: создаёте закладку, вместо адреса в которой пишете:
javascript:void(document.querySelector('source[src="/msg.mp3"]').src = "data:audio/mpeg;base64,<и т.д. то что получено в сервисе data uri>");
javascript:void(document.querySelector('source[src="/msg.mp3"]').src = "data:audio/mpeg;base64,<и т.д. то что получено в сервисе data uri>");
и при нажатии на неё файл будет заменяться.
- Aetae, сделал через Tampermonkey ссылка в коде меняется, но сам звук остается родной почему-то
- Markella, да, извиняюсь, если меняешь source надо принудительно перезагрузить:
const source = document.querySelector('source[src="/msg.mp3"]') source.src = "data:audio/mpeg;base64,<и т.д. то что получено в сервисе data uri>"; source.parentNode.load();
const source = document.querySelector('source[src="/msg.mp3"]') source.src = "data:audio/mpeg;base64,<и т.д. то что получено в сервисе data uri>"; source.parentNode.load();
- Aetae, ты не человек, а зверь, спасибо!
- Markella, как бонус можно ещё так вытянуть звук больше максимума:
const source = document.querySelector('source[src="/msg.mp3"]') source.src = "data:audio/mpeg;base64,<и т.д. то что получено в сервисе data uri>"; const audio = source.parentNode; audio.load(); audio.volume = 1; const audioContext = new AudioContext(); const gainNode = new GainNode(audioContext, { gain: 10 }); audioContext .createMediaElementSource(audio) .connect(gainNode) .connect(audioContext.destination);
const source = document.querySelector('source[src="/msg.mp3"]') source.src = "data:audio/mpeg;base64,<и т.д. то что получено в сервисе data uri>"; const audio = source.parentNode; audio.load(); audio.volume = 1; const audioContext = new AudioContext(); const gainNode = new GainNode(audioContext, { gain: 10 }); audioContext .createMediaElementSource(audio) .connect(gainNode) .connect(audioContext.destination);
Где gain - множитель.(правда больше 6 уже обычно не имеет особого смысла, т.к. врезается в железные возможности)
Скорее всего это не понадобится, но на всякий случай. - Markella, дак ты отметь ответ этого зверя решением, чёж ты так
- Владислав Лысков, как комментарий отметить как ответ?
- Markella, ну комментарий же под ответом
- Владислав Лысков, так это разные люди, или это так работает?
- Markella, ну так-то ты прав, я не обратил внимания, что это не один человек)
- Владислав Лысков,
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос

Для того чтобы подменить файл звука на свой в HTML, вам нужно использовать тег
<title>Замена файла звука</title> <audio controls> Ваш браузер не поддерживает аудио элемент. </audio>
В этом примере мы использовали тег
Убедитесь, что ваш файл звука доступен по указанному пути и имеет соответствующее расширение. После этого вы сможете успешно заменить файл звука на свой на вашем HTML-странице.