четверг, 29 декабря 2011 г.

«Гравюра» из обычной фотографии своими руками? Легко! (видео)


«Гравюра» из обычной фотографии своими руками? Легко! (видео)

15.12
 
1 856
Продолжаем трансляцию наиболее интересных статей минижурнала отgadgets.masterkit.ru в блог на Лайфхакере. Сегодня мы публикуем неэлектронную полезность.
Не все могут позволить себе приобретение дорогостоящих произведений искусства. А так, хочется иногда украсить свой интерьер настоящим живописным полотном или гравюрой по дереву! А если Вам скажут, что на этой гравюре будете изображены Вы сами, Ваши близкие или друзья? «Фантастика», – ответите Вы. Совсем нет! Смотрите видео по ссылке, и Вам все станет ясно. К тому же мы сделали для Вас подборку основных этапов создания собственного шедевра.
Как самостоятельно сделать «гравюру» по дереву
Вам понадобится обычная бумажная фотография…
…А также гладкий кусок деревянной доски…
…А также клей для декупажа MOD PODGE на водной основе и гель-медиум для декупажа
Нанесите широкой кистью на доску гель-медиум
Положите на доску фотографию лицевой стороной вниз
Разгладьте все морщины на бумаге
Оставьте сохнуть на ночь
Увлажните поверхность мокрой тряпкой
Аккуратно сотрите влажную бумагу
Удалите все остатки бумаги
Широкой кистью нанесите клей MOD PODGE
Дайте высохнуть
Теперь можно украсить свое жилище настоящей «гравюрой» по дереву!
У нас еще много интересного! Вот что еще можно сделать:
Как Вам такая «гравюра»? Какие подобные способы декорации фотографий знаете Вы?

понедельник, 26 декабря 2011 г.

Учёные создали камеру с частотой триллион кадров в секунду


Самая быстрая видеокамера в мире способна разглядеть продвижение ультракороткого импульса света через однолитровую бутылку, подобно тому как обычные скоростные камеры в деталях снимают пролёт пули сквозь яблоко.
Уникальную систему построили Рамеш Раскар (Ramesh Raskar) из Массачусетского технологического института и сотрудники его лаборатории Camera Culture при участии группы Бавенди (Bawendi Group).
Раскар известен нам по целому ряду впечатляющих опытов. Достаточно вспомнить камеру, снимающую за углом. Она, кстати, является близкой родственницей новинки – у них есть общие элементы и схожи приёмы работы со светом.
Для начала, впрочем, полюбуемся, как сферический волновой фронт от импульсного лазера прокатывается по выставленному физиками натюрморту. Каждое такое колечко пересекает сцену со скоростью света, но в замедленном ролике оно просто ползёт.
Экспериментаторы называют новую систему Trillion FPS Camera. Правда, на деле эффективное время экспозиции каждого кадра тут составляет 1,71 пикосекунды (триллионных долей секунды), так что аппарат отображает продвижение света по сцене с частотой съёмки «всего» в 0,58 триллиона кадров в секунду. Но округление авторам удивительной машины вполне можно простить.
Для сравнения, предыдущая научная установка для фиксации быстротечных событий выдавала более шести миллионов кадров в секунду.
Заметим, однако, что ещё один метод замедленной съёмки, базирующийся на голографии (light-in-flight holography), позволяет достичь большего темпа — целых 100 миллиардов кадров в секунду. Увы, эта технология пригодна вовсе не для любых ситуаций, так как работает только с когерентным светом. А его лучи теряют согласованность сразу же, как только проходят сквозь разные объекты, и потому метод отказывает.
В способе съёмки Раскара свет может быть самым обычным, а лазер в роли подсветки тут применяется не из-за когерентности исходного пучка, а из-за необходимости в ультракоротких вспышках.
Новая система способна фиксировать свет, не только проходящий сквозь прозрачную цель, но и отражённый от непрозрачного тела. Видео запечатлевает продвижение световых волн по поверхности объекта. Для выявления тонкостей их взаимодействия применяется цветовое кодирование времени прихода различных импульсов (фото MIT Media Lab, Camera Culture).
В качестве основы для новой системы учёные использовали стрик-камеру (streak camera). В таком устройстве лучи света попадают на фотокатод через узкую щель.
Выбитые электроны за счёт быстроменяющегося электрического поля отклоняются в направлении, перпендикулярном щели. Далее они летят к детектору.
Таким способом временная развёртка короткого импульса света превращается в пространственную. Прибывшие чуть раньше фотоны отражаются в детекторе в несколько иной позиции, чем частицы прилетевшие чуть позднее.
Рекордная камера и подготовленная для съёмки сцена (фото MIT Media Lab, Camera Culture).
Изображения, добываемые с помощью такой камеры, получаются двумерные, передаёт институт, но при этом одно измерение в кадре является пространственным (оно расположено вдоль щели), а второе – это время.
Чтобы зафиксировать сцену полностью, изобретатели применили медленно поворачивающееся зеркало, направляющее взгляд щелевой камеры на новые и новые линии.
Для съёмки целого ролика пробег волнового фронта вдоль сцены следует повторить миллионы раз. А чтобы взаимное расположение световых полос в кадрах было правильным, необходимо точно синхронизировать импульсы лазера подсветки (частота следования – 13 наносекунд, ширина импульса – несколько фемтосекунд) и срабатывание детекторов. Последние воспринимают отражённый от объектов свет с временным разрешением примерно в пикосекунду.
Сложная оптика и электроника, необходимая для синхронизации работы всех частей комплекса, как раз составляют секрет «триллионной камеры». Но не единственный.
Важно, что снимаемые объекты остаются неподвижными, так что картина прокатывающихся по ним световых импульсов – всегда одна и та же. Это и позволяет вести съёмку одной задуманной сцены в течение нескольких минут (за это время сканирующее зеркало снимает множество узких линий в поле зрения камеры).
Если вернуться к аналогии с пулей и яблоком, то в данном случае учёные словно получают в финальном ролике один её пролёт по экрану после миллионов попыток – яблоко просто «расстреливают из пулемёта».
В зависимости от способа обработки массива данных исследователи могут создавать различные варианты видео или фотографий объектов (фотографии Di Wu, Andreas Velten, MIT Media Lab, Camera Culture).
Дальнейшая обработка колоссального массива информации (расположение фотонов и время их фиксации в детекторе) отдаётся на откуп компьютеру. Придуманные Рамешом и его коллегами математические алгоритмы позволяют сформировать из таких данных результирующий ролик, состоящий всего из 480 кадров.
Легко посчитать, что за весь фильм (он показывает нам событие, разворачивающееся на протяжении 0,8 наносекунды) световой луч успевает пробежать по сцене примерно 25 сантиметров, а за один кадр – примерно полмиллиметра.
Андреас Фельтен (Andreas Velten), один из авторов этой системы, называет её «ультимативной», мол, «во Вселенной нет ничего со столь быстрым взглядом, как у этой камеры».
Её создатели также подчёркивают, что вдохновлялись съёмками летящих пуль, впервые проведённых десятилетия назад. Тогда ключом к остановке мгновения были фотовспышки, разумеется, доступные в те годы.
Нынешние новаторы в целом используют аналогичный подход, только теперь вспышки света стали в миллиарды раз короче. Раскар называет такие импульсы «световыми пулями». Особенно эффектно они смотрятся в упомянутом вначале опыте с бутылкой.
Бутылка, снятая обычным фотоаппаратом и она же, увиденная камерой Trillion FPS. Прокатывающийся короткий импульс расцвечен компьютером (фото MIT Media Lab, Camera Culture).
Возможные приложения технологии включают в себя анализ физической структуры конструкционных материалов или биологических тканей. «Это как УЗИ со светом», — поясняет Раскар.
Также данная техника способна раскрыть новые грани быстротекущих физических процессов. А ещё камеру на триллион кадров в секунду Рамеш предлагает использовать для съёмок образовательных фильмов, показывающих знакомые вещи с необычной стороны.
Но пока триллион кадров – это лишь эксперимент. Притом дорогостоящий. Только импульсный лазер и ультрабыстрая стрик-камера, использованные в опыте, в сумме стоят $250 тысяч. Тут Раскар рассчитывает на технический прогресс, который позволит в будущем сократить размер оптических компонентов подобной системы и снизить их цену.
Подробности опытов Рамеша и коллег можно найти в статьев OSA Technical Digest и материале, подготовленном для выставки Siggraph 2011.

MEN"S HEALTH ОБНАРОДОВАЛ TOP-100 САМЫХ СЕКСУАЛЬНЫХ ЖЕНЩИН ВСЕХ ВРЕМЕН (ФОТО)


MEN"S HEALTH ОБНАРОДОВАЛ TOP-100 САМЫХ СЕКСУАЛЬНЫХ ЖЕНЩИН ВСЕХ ВРЕМЕН (ФОТО)

Опубликовано 12.12.11 15:31Men"s Health обнародовал TOP-100 самых сексуальных женщин всех времен
Влиятельный мужской журнал опубликовал рейтинг самых сексуальных женщин всех времен, основанный на данных опроса читательской аудитории.
Список, состоящий из 100 позиций, возглавила бывшая супруга Брэда Питта - 42-летняя голливудская актриса Дженнифер Энистон за "удивительное умение быть одновременно забавной, естественной и сексуальной." Об этом пишут"Аргументы недели".
Первая десятка топ-100 самых сексуальных женщин по версии Men"s Health выглядит так:
Дженнифер Энистон
Ракель Уэлч 
Мэрилин Монро 
Бритни Спирс 
Мадонна 
Урсула Андресс 
Бетти Пейдж 
Памела Андерсон
Джейн Фонда 
Анджелина Джоли
 
В TOP-100 настоящие звезды экрана и сцены соседствуют со знаменитостями иного рода -  прославленными стриптизершами, исполнительницами бурлеска, актрисами эротического кино. "Затесались" в этот рейтинг и порнозвезды Дженна Джеймсон и Саша Грей. Обе они уже не снимаются для XXX-фильмов, но в недалеком прошлом считались самыми продаваемыми актрисами этого жанра.

воскресенье, 18 декабря 2011 г.

Организация IPTV-трансляции


Организация IPTV-трансляции из песочницы

Началось все с того, что сеть начала расти и нужно было предоставлять пользователям ресурсы, кроме как доступ в интернет. Так как, наша компания кроме предоставления услуг доступа в интернет, занимается еще кабельным аналоговым и цифровым телевидением, то было решено организовать вещание телевидения в IP-сеть.

Итак, Дано:
В качестве источника потока использовались спутниковые ресиверы DCH-4000P китайской фирмы PBI.





Так как, один такой ресивер позволяет получать на выходе только 6 мультикастовых каналов, купили IP Streamer IPS-01 одесской фирмы Спец-ТВ. Поэтому, поток будем брать не через IP, а с ASI выхода.

image

У него 6 ASI входов, на которые мы будем подавать потоки с шести ресиверов PBI. Так как выходной порт у стримера гигабитный и в потоке находятся все наши каналы, нужно было сделать так, чтобы к клиенту на сетевой интерфейс попадали не все 60 каналов, и занимали всю пропускную способность сети (поток около 300Мбит/с), а только тот канал, который он запросит. В принципе можно было реализовать такую функцию на коммутаторах D-Link, но знакомые твердили что D-Link-и плохо себя показывают в качестве querier'ов. Вообщем было решено купить управляемый L2 коммутатор FoxGate S-6224-S2.

image

Передавать абонентам будем через коммутатор D-Link DES-3526.

image

Схема коммутации следующая, нарисована на скорую руку:

image

Итак, приступим к настройке.

Настройка ресиверов сводится к обычной настройке спутникового ресивера, а настройка стримера к щелканью в браузере по каналам и присвоению каждому мультикастового адреса вида 239.255.х.х. Поэтому на настройке данного оборудования я останавливаться не буду.

Начнем с конфига querier'а Foxgate S6224-S2, IP-адрес нашего коммутатора 10.0.0.10:

1. Создаем отдельный vlan:

vlan 229

2. Включаем контроль мультикаст-потока:

multicast destination-control

3. Настраиваем порты:

Interface Ethernet0/0/2
switchport access vlan 229
...
...
...
!
Interface Ethernet0/0/24
switchport access vlan 229


4. 25 порт смотрит в сторону стримера, а 26 в сторону коммутатора, поэтому 26 порт делаем транковым:

Interface Ethernet0/0/25
switchport access vlan 229
!
Interface Ethernet0/0/26
switchport mode trunk


5. Включаем igmp snooping и говорим, что наш vlan является мультикастовым:

ip igmp snooping
ip igmp snooping vlan 229

6. Включаем функцию querier'а и говорим, что источником является сам коммутатор:
ip igmp snooping vlan 229 l2-general-querier
ip igmp snooping vlan 229 l2-general-querier-source 10.0.0.10


Все, на этом настройка querier'а завершена.

Перейдем к D-Link'у (25-26 порты в качестве аплинка):

1. Включаем igmp snooping и говорим, что наш vlan 229 является мультикастовым:

enable igmp_snooping
create igmp_snooping multicast_vlan multicast 229


2. Говорим, что абонентские порты 1-24, а в качестве источника используем 25 и 26:

config igmp_snooping multicast_vlan multicast state enable replace_source_ip 0.0.0.0 member_port 1-24 source_port 25-26

3. Данная опция нужна, чтобы мультикаст не шел на все порты подряд:

config igmp_snooping multicast host_timeout 260 router_timeout 260 leave_timer 2 state enable
config igmp_snooping querier multicast query_interval 125 max_response_time 10 robustness_variable 2
config igmp_snooping querier multicast last_member_query_interval 1 state disable


4. Выключаем фильтеринг на магистральных портах (на всякий случай):

config limited_multicast_addr ports 25-26 access deny state disable

5. Запрещаем клиентам вещать свои каналы, вернее просто никто не сможет их смотреть:

config multicast port_filtering_mode 1-24 filter_unregistered_groups
config multicast port_filtering_mode 25-26 forward_unregistered_groups


На данном этапе настройка коммутатора завершена.

Создаем плейлист channels.m3u со следующим содержанием:

#EXTM3U
#EXTINF:0,РТР-Планета
udp://@239.255.1.1:1234
#EXTINF:0,НТВ-Мир
udp://@239.255.1.2:1234
#EXTINF:0,ТНТ
udp://@239.255.1.3:1234
#EXTINF:0,СТС-Москва
udp://@239.255.1.4:1234
#EXTINF:0,Премьера
udp://@239.255.1.5:1234
.
.
.
#EXTINF:0,Дом Кино
udp://@239.255.1.60:1234


Открываем его например vlc и наслаждаемся просмотром.

Позже я столкнулся с проблемой, у меня дома стоит сервер с Ubuntu на борту и внешним IP-адресом + точка доступа, который используется в качестве роутера для домашней сети, и встал вопрос о том, как собственно смотреть IPTV. Решение нашлось быстро с помощью igmproxy, однако разочарование не долго заставило себя ждать. Картинка рассыпалась, а про просмотр через wi-fi вообще можно было не мечтать, т.к. поток мультикаста перегружал мою 54Мбит/с точку доступа. Погуглив стало понятно, что будет лучше поток преобразовывать из UDP в HTTP. Это можно осуществить с помощью программы udpxy.

Устанавливаем ее и создаем стартовый скрипт:

#!/bin/sh

if [ -n "`pidof udpxy`" ] ;then
/usr/bin/killall udpxy > /dev/null 2>&1
fi
/usr/local/bin/udpxy -a eth0 -m eth1 -p 8888
#eth0 - смотрит в локальную сеть
#eth1 - в сторону провайдера
#8888 - порт на котором будет идти трансляция, можно выбрать любой свободный


Осталось положить наш скрипт в /etc/init.d/.

Запускаем:

/usr/local/bin/udpxy -a eth0 -m eth1 -p 8888

Проверим:

zeleniy@promeline:~$ ps ax | grep udp
1970 ? S 0:00 /usr/local/bin/udpxy -a eth0 -m eth1 -p 8888
15231 pts/0 D+ 0:00 grep --color=auto udp


Статистика доступна по адресу:

http://172.16.0.1:8888/status


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

#EXTM3U
#EXTINF:0,RTR-PLANETA
http://172.16.0.1:8888/udp/239.255.1.1:1234
#EXTINF:0,DOM KINO
http://172.16.0.1:8888/udp/239.255.1.2:1234
#EXTINF:0,TVCI
http://172.16.0.1:8888/udp/239.255.1.3:1234
#EXTINF:0,BIBIGON
http://172.16.0.1:8888/udp/239.255.1.4:1234
#EXTINF:0,RBK-TV
http://172.16.0.1:8888/udp/239.255.1.5:1234


Теперь даже по wi-fi можно с комфортом посмотреть любимые передачи.

среда, 14 декабря 2011 г.

Видеохостинг своими руками

Эта статья о некоторых технических аспектах реализации бесплатного сервиса для загрузки, хранения и просмотра видео. Будут рассмотрены вопросы настройки серверного программного обеспечения, даны примеры команд для конвертации видео и примеры кода на языке PHP.

С введением поддержки стандарта HTML5 во многих браузерах стало возможно встраивать видео-плеер при помощи тега video. Каждый браузер поддерживает определенный набор кодеков и контейнеров. Эта поддержка очень хорошо описана на странице http://diveintohtml5.org/video.html#what-works.

Одним из основных требований к системе являлась поддержка устройств Apple (iPhone, iPad, iPod). Из-за того, что эти устройства поддерживают онлайн-видео в единственном формате — MP4 и не имеют возможности использовать Flash-плеер, изначально было решено взять за основу универсальный MP4-контейнер (H.264 видео и AAC аудио). При кодировании используются бесплатные реализации этих кодеков libx264 и libfaac. Отсутствие поддержки этих форматов в других браузерах было решено компенсировать использованием Flash-плеера, который подключается автоматически в случае, если браузер пользователя не поддерживает тег video, либо поддержка невозможна из-за того, что браузер не поддерживает видео в формате MP4.

Архитектура


Архитектура системы достаточно проста и включает 2 типа серверов:
  • сервер конвертации (так же выполняющий роль сервера баз данных и веб-сервера);
  • файловый сервер, на который перемещаются конвертированные видео файлы.

image

Основные рабочие лошадки по доставке контента — файловые серверы. Идея в том, чтобы как можно скорее после конвертации переместить файл с основного сервера на файловый, чтобы избежать скачка нагрузки на сетевом интерфейсе в случае загрузки популярного видео. Для того, чтобы определить на каком сервере в данный момент находится конкретный видео-ролик, в БД имеется связывающая таблица videos_servers. На всех файловых серверах и сервере конвертации установлен модуль для трансляции потокового видео. Для перемещения файлов между серверами используется протокол NFS.

Очередь конвертации организуется при помощи сервера очередей beanstalkd (http://kr.github.com/beanstalkd/). Тесты показывают, что на шестиядерном сервере возможен запуск 30 воркеров. 30 пользователей смогут одновременно конвертировать видео без ущерба для общей производительности системы (время генерации страницы на стороне веб-сервера остаётся приемлемым). Тесты с большим числом воркеров не проводились, но имеется неплохой запас мощности и, в случае необходимости, количество воркеров может быть увеличено.

Серверное программное обеспечение


На сервере конвертации и на всех файловых серверах установлен Debian Lenny.

Программное обеспечение для обработки видео

Для конвертации видео в формат MP4 используется наиболее популярное в данный момент решение — ffmpeg (http://www.ffmpeg.org/). ffmpeg прекрасно справляется с конвертацией видео в самых разнообразных форматах и может использовать несколько ядер процессора в многоядерной системе. Для пост-обработки мы используем замечательную утилиту MP4Box из пакета gpac (http://gpac.sourceforge.net/). Пост-обработка необходима из-за того, что ffmpeg помещает “moov-атомы” (мета-информацию о видео) в конец файла, однако, чтобы пользователь имел возможность просматривать видео не дожидаясь его полной загрузки, эти атомы должны быть вначале файла. MP4Box перемещает их в начало и, кроме этого, приводит файл в соответствие со всеми стандартами, делает его пригодным для потоковой трансляции через соответствующий модуль.

$ ffmpeg -vpre videobam -y -i input.avi -s 320x240 -vcodec libx264 -acodec libfaac -threads 0 -ab 64k -b 400k -bt 500k -g 24 -r 24 temp.mp4
$ MP4Box -add temp.mp4 output.mp4

Следует заострить внимание на опции -g 24. Она определяет через сколько кадров будет сохранён каждый новый ключевой кадр (keyframe). Наличие ключевых кадров необходимо для того, чтобы пользователь мог прокручивать длинный ролик не дожидаясь его полной загрузки. Эта возможность реализуется при помощи модуля трансляции. Клиент (браузер или Flash-плеер) передаёт веб-серверу GET-параметр start, который обрабатывается модулем трансляции и означает количество секунд с которого нужно начинать проигрывание.

GET /output.mp4?start=856.733 HTTP/1.1

Кроме того, параметр -threads 0 существенно увеличит скорость конвертации указав программе на необходимость автоматически определить количество ядер процессора и использовать их в процессе работы. Важно указать необходимое количество кадров -r 24. У нас были проблемы с некоторыми роликами из-за неадекватно высокого количества кадров в секунде (в основном, это были скринкасты), для которых время конвертации было совершенно несоответствующим длительности ролика.

Для каждого видео делаются экранные снимки в определенных моментах времени, чтобы пользователь смог беглым взглядом оценить содержание ролика. Пример таких снимков можно увидеть внизу на странице http://videobam.com/tour. ffmpeg не в состоянии делать эти снимки быстро (он перематывает видео до нужного момента и лишь потом делает снимок). Для быстрого снятия снимков мы используем утилиту mplayer (http://www.mplayerhq.hu/), которая делает снимки практически моментально перемещаясь по файлу при помощи ключевых кадров.

$ mplayer -ss 00:00:04 -sstep 12 -frames 16 -vo jpeg:outdir=/tmp/pictures/ -nosound output.mp4

Следует отметить, что всё программное обеспечение собирается вручную из исходных кодов (клонируется из соответствующих систем контроля версий либо используются свежие сборки). Использовать самые новые версии из стабильных веток очень важно так как с момента исправления какого-либо бага до попадания этих исправлений в пакет выбранного вами дистрибутива Linux проходит достаточно много времени. В частности, мы столкнулись с проблемой заикающегося звука при конвертации некоторых QuickTime роликов в формат MP4. Проблема успешно решилась при помощи установки свежей версии библиотек libfaac и libfaad.

Серверные модули

Примечание: для сборки модуля h264 возможно потребуется применить патч http://pastie.org/1405286.

$ cd nginx-0.8.53
$ ./configure --add-module=../nginx_mod_h264_streaming-2.2.7/ --add-module=../ngx_http_secure_download/

Трансляция потокового видео обеспечивается модулем h264 для веб-сервера nginx (http://h264.code-shop.com/). Настройка этого модуля осуществляется очень просто:

/usr/local/nginx/conf/nginx.conf
location ~ \.mp4$ {
  mp4;
}

Перезапускаем сервер и пробуем загрузить ролик начиная с 10-ой секунды:

$ wget -O temp.mp4 “http://videobam.com/test.mp4?start=10.0”

Для защиты от копирования ссылок (хотлинкинга) мы используем модуль HTTP Secure Download (http://github.com/replay/ngx_http_secure_download). Он позволяет закодировать ссылку на видеофайл с использованием соли, установленной в настройках.

/usr/local/nginx/conf/nginx.conf
location ~* /videos {
  secure_download on;
  secure_download_path_mode file;
  secure_download_secret saltsaltsalt$remote_addr;

  if ($secure_download = "-1") {
      rewrite /expired.html break;
  }
  if ($secure_download = "-2") {
      rewrite /bad_hash.html break;
  }
  if ($secure_download = "-3") {
      return 500;
  }

  mp4;
  rewrite ^(.*)/[0-9a-zA-Z]*/[0-9a-zA-Z]*$ $1 break;
}

Ссылка на скачивание генерируется следующим образом:

public function secure_url($url)
{
  $ts = time() + 3600;
  $ts_in_hex = dechex($ts);
  $secret = 'saltsaltsalt' . $_SERVER['REMOTE_ADDR'];
  $hash = md5($url . '/' . $secret . '/' . $ts_in_hex);
  return  $url . '/' . $hash . '/' . $ts_in_hex;
}

NFS и autofs

Для работы с файловыми серверами на сервере конвертации установлен autofs. Он монтирует нужные файловые серверы по запросу. Все NFS-разделы монтируются в “мягком” режиме (soft mode), чтобы избежать зависания процесса копирования в случае, если файловый сервер вышел из строя.

/etc/auto.storage
0  :/var/www/shared/local_storage
1  -fstype=nfs,rw,async,soft,intr,timeo=20,rsize=64000,wsize=64000 f1.videobam.com:/var/storage
2  -fstype=nfs,rw,async,soft,intr,timeo=20,rsize=64000,wsize=64000 f2.videobam.com:/var/storage
3  -fstype=nfs,rw,async,soft,intr,timeo=20,rsize=64000,wsize=64000 f3.videobam.com:/var/storage
4  -fstype=nfs,rw,async,soft,intr,timeo=20,rsize=64000,wsize=64000 f4.videobam.com:/var/storage

Структура файлов и папок на всех серверах идентична, поэтому работа с файловыми серверами ведётся прозрачно при помощи подставления идентификатора сервера в шаблон пути. Важно помнить про ограничения файловой системы ext3 на количество файлов и папок в конкретной директории, все видео сохраняются в директории вида videos/a/ab/video.mp4, где “a” и “ab” — это первые буквы в названии видео.

Клиентская часть


Как уже было сказано ранее, мы используем VideoJS (http://videojs.com) для проигрывания и стилизации HTML5-видео. Кроме того, VideoJS выполняет “более умный” откат к Flash-плееру (в случае отсутствия поддерживаемого браузером видео-файла в списке источников). В качестве Flash-плеера используется flowplayer (http://flowplayer.org).

Тематические ссылки


Программное обеспечение:

beanstalkd kr.github.com/beanstalkd/
VideoJS videojs.com/
flowplayer flowplayer.org
ffmpeg www.ffmpeg.org/
mplayer www.mplayerhq.hu/
gpac (MP4Box) gpac.sourceforge.net/
nginx 0.8.53 nginx.org/en/
nginx h264 streaming module h264.code-shop.com
nginx http secure download github.com/replay/ngx_http_secure_download
nginx upload progress module github.com/masterzen/nginx-upload-progress-gimodule

Дополнительные материалы:

diveintohtml5.org/video.html
rob.opendot.cl/index.php/useful-stuff/ffmpeg-x264-encoding-guide/
sites.google.com/site/linuxencoding/x264-ffmpeg-mapping
x264dev.multimedia.cx/
rodrigopolo.com/ffmpeg/cheats.html
e-mats.org/2010/01/fixing-stuttering-audio-with-ffmpeg-and-quicktime/
www.videohelp.com/tools/mp4box