Firefox 3.5 и новые схемы в URL
Firefox 3.5 под FreeBSD по умолчанию не воспроизводит потоковое видео с веба, ссылки на которое имеют вид типа mms://hostname/file или rstpt://hostname/file. Но к нему можно прикрутить и воспроизведение посредством внешнего плеера и сохранение записей. На примере протокола mms:// и проигрывателя mplayer, который понимает URL такого типа.
1. Создадим два простеньких shell-скрипта, один для воспроизведения, другой для сохранения файлов.
Первый, по имени mms-player, просто проигрывает файл с нужными опциями (в этом примере без опций):
#!/bin/sh
/usr/local/bin/mplayer "$1"
Второй, по имени mms-saver, сохраняет видео в подкаталог Downloads домашнего каталога:
#!/bin/sh
dir="$HOME/Downloads"
mkdir -p $dir
[ -d $dir ] || exit 1
fname=`basename "$1"`
xterm -T "Downloading $1" -e sh -c "
/usr/local/bin/mplayer -dumpstream '$1' -dumpfile '$dir/$fname'
read wait"
2. Самая большая проблема в том, что в Firefox 3.5 нет интерфейса для создания новой схемы mms:// (многочисленные рецепты на вебе касательно страницы about:config и настроек network.protocol-handlers.* не работают для 3.5). Поэтому первоначальная регистрация схемы выполняется вручную:
- закрываем Firefox
- любым файловым менеджером или просто в шелле переходим в каталог $HOME/.mozilla/firefox, там находим каталог профиля с именем типа gg0lbizh.default, а в нём файл mimeTypes.rdf, который открываем любым текстовым редактором.
- ищем в нём строку
about="urn:schemes:root"
, она там в одном месте. Нас интересует такой кусок файла:<RDF:Seq RDF:about="urn:schemes:root"> <RDF:li RDF:resource="urn:scheme:mailto"/> <RDF:li RDF:resource="urn:scheme:irc"/> <RDF:li RDF:resource="urn:scheme:ircs"/> <RDF:li RDF:resource="urn:scheme:webcal"/> <RDF:li RDF:resource="urn:scheme:file"/> </RDF:Seq>
добавляем в этот список строку<RDF:li RDF:resource="urn:scheme:mms"/>
- непосредственно перед этим куском вставляем такую строку:
<RDF:Description RDF:about="urn:scheme:mms" NC:value="mms"/>
В итоге получаем в этом месте файла:<RDF:Description RDF:about="urn:scheme:mms" NC:value="mms"/> <RDF:Seq RDF:about="urn:schemes:root"> <RDF:li RDF:resource="urn:scheme:mailto"/> <RDF:li RDF:resource="urn:scheme:irc"/> <RDF:li RDF:resource="urn:scheme:ircs"/> <RDF:li RDF:resource="urn:scheme:webcal"/> <RDF:li RDF:resource="urn:scheme:file"/> <RDF:li RDF:resource="urn:scheme:mms"/> </RDF:Seq>
- сохраняем файл, закрываем его и запускаем Firefox
- идём в меню
Edit/Preferences/Applications
и в списке наблюдаем строчку сmms
в столбцеContent type
. В столбцеAction
выбираемUse other...
, указываем там путь к нашему скриптуmms-player
, затем ещё раз выбираемUse other...
и указываем путь кmms-saver
, в третий раз выбираем тамAlways ask
.
Всё. Теперь при клике на адрес типа
mms://hostname/file
браузер спрашивает, что мы хотим - проиграть или сохранить файл.