Как я могу контролировать имя файла, когда аудио HTML5 сохраняется пользователем? - PullRequest
2 голосов
/ 07 июля 2019

В моем блоге можно слушать радиоканал, либо прямую трансляцию, либо предыдущие трансляции из архива канала по расписанию.

Я бы хотел, чтобы посетители могли сохранять эти старые трансляции под своим уникальным названием.Когда посетители нажимают на указанную метку времени, соответствующий или соответствующим образом параметризованный URL-адрес загружается в источник аудиообъекта HTML5.

Существует два вида форматов URL, первый только для текущего дня: http://example.com/20190707080000/20190707090000/channel1.mp3
В этом случае я могу использовать следующий хак: вместо последнего URL я загружаю следующийURL в аудиоплеер: http://example.com/20190707080000/20190707090000/channel1.mp3/Title_of_the_programme.mp3

В этом случае посетитель сможет сохранить прослушиваемую программу под заданным именем файла: "Title_of_the_programme.mp3".

Другие URL-адреса длядругие дни, отличные от текущего дня, отличаются, так как эти программы уже были заархивированы, возможно, в более низком битрейте и / или формате: http://example.com/2019/07/06/channe11.mp4?start=28800&end=32400 параметры «start» и «end» предназначены для данной секундыдень, когда фактическая программа начинается и заканчивается.

Во втором случае вышеупомянутый хак больше не работает, поэтому я не могу загрузить аналогичный URL в аудиоплеер HTML5: http://example.com/2019/07/06/channel1.mp4?start=28800&end=32400/Title_of_the_programme.mp4

К сожалению, он не работаетКогда я нажимаю кнопку «Сохранить как» на аудиоплеере HTML5, имя файла всегда будет «channel1.mp4», что является неоптимальным.

В обоих случаях полная программа обслуживается сразу для запроса GET.

Атрибут «download», «a [download]» для HTML-элемента «A» или тот же атрибут для HTML5-элемента «audio» также не работает из-за той же политики происхождения в браузере: домен радио, конечно, отличается от домена моего блога.

Извлечение результирующего медиа-файла с помощью вызова Ajax (XMLhttprequest) в большой двоичный объект браузера также не работает из-за той же политики происхождения.Сервер радиостанции, конечно, не предоставляет соответствующее поле заголовка для этих вызовов Ajax: «Access-Control-Allow-Origin: *».

Заголовки ответа URL радиопрограммы не содержатполе заголовка «content-disposition», поэтому имя файла должно определяться самим URL.

1 Ответ

0 голосов
/ 07 июля 2019

Случайно я нашел решение, которое является просто атрибутом "title":

<audio id="track" controls="controls" autoplay="autoplay" title="The_title_of_te_programme.mp4">
  <source id="mp3source"  src=" http://example.com/2019/07/06/channel1.mp4?start=28800&end=32400/Title_of_the_programme.mp4" type="audio/mpeg">
</source></audio>

Может быть полезно и для других.Обновление: метод атрибутов Title работает в Chromium.И кажется, что в Opera работает метод [download] (по крайней мере, в той версии, которая у меня есть, Opera 45):

<a href="http://example.com/20190707080000/20190707090000/channel1.mp3" download="Title_of_the_programme.mp3">

Firefox все еще нужно разрешить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...