dadv: (chuck)

Прикрутил к своему апачу поддержку HTTP Pseudostreaming для видео в форматах FLV и MP4.

Немного теории: псевдостримингом называют запрос с сервера и отдачу сервером видеофайлов не только с начала, но и с произвольного смещения (байтового или секундного) через URL вида http://server/file.flv?start=NNN или http://server/file.flv?start=SEC.MS

В ответе сервер отдаёт сначала метаданные, потом видеопоток с указанного места. Для apache-2.2 модуль mod_flvx.so реализует превдостриминг для FLV и mod_h264_streaming.so для MP4. Файлы FLV могут не содержать в себе таблицы смещений ключевых фреймов, которая необходима для псевдостриминга; команда flvtool++ добавляет эту таблицу в FLV-файл. flvtool++ под FreeBSD есть в портах.

В качестве проигрывателя, встраиваемого в веб-страницу (в ЖЖ тоже встраивается) попробовал JW Player 5.8. Не без недостатков, но вполне рабочий. Для пробы переделал несколько своих старых LJ-постов на свой сервер, например.

Методы встраивания плеера через JavaScript, автоматически определяющие поддержку HTML5 или Flash и выдающие подходящий код клиентскому устройству (браузеру или планшетнику) не проходят в ЖЖ. Тут приходится использовать просто <embed>:

<lj-embed>
<embed type="application/x-shockwave-flash"
flashvars="file=http://www.grosbein.net/video/sizo.mp4&provider=http&duration=229"
id="sizo" name="sizo" width="640" height="360"
allowfullscreen="true" allowscriptaccess="always"
src="http://www.grosbein.net/jwp/player.swf" />
</lj-embed>

Определенная корявость плеера компенсируется отсутствием завязки на внешние сервисы, что дорогого стоит. Внезапно не снесут файл, никакой рекламы, кроме нескольких секунд логотипа плеера в начале воспроизведения в уголке.

Музыку тоже воспроизводит, хотя и без pseudostreaming:



Или максимально компактно:

dadv: (Default)

Из FreeBSD 7.0 и новее выпилили утиль /usr/bin/objformat, которую хочет apache-1.3 при сборке. При отсутствии такой утилиты сборка считает, что собирается на aout-based system (какой FreeBSD была 12 лет назад) и собирает нерабочие бинарники. Утиль восемь лет назад была официально объявлена obsolete, но apache-1.3 пользоваться ей при сборке так и не перестал.

При необходимости собрать apache-1.3 с собственным набором патчей на FreeBSD8 есть два пути: заменить aout на elf внутри скрипта src/Configure или положить в /usr/bin/objformat исполняемый скрипт:

#!/bin/sh echo elf

Я выбрал второе, чтобы не помнить об этом и не ковырять src/Configure если вдруг понадобиться добавить ещё что-то в код апача.

Profile

dadv: (Default)
Choose your future

June 2017

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

Syndicate

RSS Atom

Tags

Style Credit

Powered by Dreamwidth Studios