Прикрутил к своему апачу поддержку 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:
Или максимально компактно: