Как сохранить изображение в ico
Потребовалось сделать favicon.ico, да как назло никакого софта для сохранения в ico не оказалось под рукой, даже премного-мной-уважаемый Photoshop не умеет сохранять в ico, пришлось импровизировать.
В PHPThumb обнаружил отличную функцию для сохранения GD ресурса в ICO. На основе этой функции сделал собственный мааааааленький скриптик для преобразования графических файлов в ico. В общем, инструмент получился действительно полезный - выкладываю его для общего пользования. Здесь исходник.
Поддерживает GIF, PNG и BMP.
Upd: для этих же целей есть офигительный сервис favicon.ru
Upd2: Бесплатный конкурент Фотошопа - Gimp прекрассно умеет сохранять в ico.
Upd3: Как оказалось гимп всё-же сохряняет ico с ошибкой - получается фигня, по крайней мере в Windows версии.
Полезная JavaScript библиотечка
Обнаружил полезный тулкит для JS, в частности, есть замечательная функция для нахождения координат объектов которая работает в скроллируемых областях.
Вебкамеры Саратова
Шикарный подбор вебкамер установленных по саратову
Организация потокового видео при помощи ffserver
Показать видео на сайте довольно просто. Простейший вариант это выложить на сервер avi, mp4 или flv файл и придумать как этот файл будет воспроизводиться на стороне клиента.
Самым универсальным способом является использование Adobe Flash всилу того, что это технология доступна практически на всех широко распространенных платформах. Можно воспользоваться либо одним из доступных плееров либо сделать свой - благо это можно сделать парой щелчков мыши... Ну или чуть больше чем парой щелчков...
Однако, при таком способе, каждый раз при загрузке страницы видео будет запускаться с самого начала, а иногда бывает необходимо организовать подобие прямой трансляции в реальном времени. Например, сделать вывод видео с вебкамеры или вывести вебкаст в определенное время. В этом случае, сервер должен выдавать пользователю не файл но видео поток в реальном времени. В большинстве случаев, это конечно, тоже оказывается файл, вот только начинается этот файл с того момента с которого его начал смотреть пользователь.
Обычный веб сервер, например Apache, для вывода потокового видео не годится. Требуется специальный потоковый сервер. Существует большой выбор как платных так и бесплатных потоковых серверов.
Для того чтобы организовать вывод видео в реальном времени можно воспользоваться утилитой ffserver который устанавливается всместе с ffmpeg. Программка довольно простая в использовании, хотя у меня сложилось впечатление, что довольно капризная и нестабильная. Для серьезных задач ее использовать довольно затруднительно а для простых - когда нужно вывести часовой ролик раз в день вполне подойдет.
Настройка сервера довольно проста. Конфигурационный файл должен быть сохранен как /etc/ffserver.conf. В процессе установки командой make install он не создается, поэтому его нужно создать. Пример файла можно взять с сервера. Здесь выложен мой вариант
Видео в нашем случае будет доступно по адресу http://site.com:8080/file.flv - это адрес указывается для Flash - плеера.
Чтобы видео выводилось стабильно, нужно чтобы частота кадров была такая же как и у выходного потока.
Для того чтобы видео начало раздаваться пользователям его нужно сначала скормить серверу. Как только видео серверу начало скармливаться в тот же самый момент оно начинает раздаваться клиентам.
Для пуска видео можно воспользоваться вот таким файлом.
#!/bin/sh #стартуем сервер /usr/local/bin/ffserver & #подождем две секунды чтобы стартовал sleep 2 #скармливаем видео /usr/local/bin/ffmpeg -i /root/evergreen800.flv http://localhost:8080/feed1.ffm
Замечено что у ffserver в момент скармливания видео сервер сохраняет его во временный файл прописанный в файле конфигурации. Если максимальный размер видео больше максимального размера прописанного в конфиге, то сервер вылетает с ошибкой. Чтобы такого не происходило во первых нужно чтобы размер файла был всегда больше, во вторых нужно этот файл периодически удалять. Для этого я написал вот такой файлик.
#!/bin/sh PID=`ps -ea -o "pid fname" | grep ffserver | sed -e 's/^ *//' -e 's/ .*//'` if [ "${PID}" != "" ] then kill -9 ${PID} fi rm /tmp/feed1.ffm ffserver
Несколько вопросов для меня так и остались открытыми - после длительного бездействия процесс сервера вываливается, хотя сервер прописан в конфиге как демон.
Почему не удаляется временный файл автоматически тоже не понятно.
В общем, если у кого есть какие мысли на этот счет - милости прошу оставляйте свои комментарии.