dadv: (Default)
[personal profile] dadv

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 браузер спрашивает, что мы хотим - проиграть или сохранить файл.

Profile

dadv: (Default)
Choose your future

June 2017

M T W T F S S
   1234
56 7891011
12131415161718
19202122232425
2627282930  

Tags

Style Credit

Powered by Dreamwidth Studios