25 янв. 2010 г.

Видеосервис (потоковое видео) на apache2 под linux

Нужно скачать mod_flvx.c
закинуть его в /usr/lib/apache2 откомпилировать при помощи
# apxs2 -i -a -c mod_flvx.c
проверяем в /etc/sysconfig/apache2 наличие в стартовых модулях (APACHE_MODULES) записи flvx
прописываем в /etc/apache2/httpd.conf

AddType video/x-flv .flv
AddHandler flv-stream .flv

ребутаемся и при помощи apache2ctl -M проверяем наличие flvx_module
Грузим mplayer, если оного нету.(Так же необходим libmp3lame - иначе ничего не получиться - будет ругаться memplayer)
При компиляции не хотел ставиться и дико ругался на ivtv

vo_ivtv.c: In function 'ivtv_reset':
vo_ivtv.c:79: error: storage size of 'sd' isn't known
vo_ivtv.c:80: error: storage size of 'sd1' isn't known
vo_ivtv.c:84: error: 'IVTV_STOP_FL_HIDE_FRAME' undeclared (first use in this function)
vo_ivtv.c:84: error: (Each undeclared identifier is reported only once
vo_ivtv.c:84: error: for each function it appears in.)
vo_ivtv.c:87: error: 'IVTV_IOC_STOP_DECODE' undeclared (first use in this function)
vo_ivtv.c:97: error: 'IVTV_IOC_START_DECODE' undeclared (first use in this function)
vo_ivtv.c:80: warning: unused variable 'sd1'
vo_ivtv.c:79: warning: unused variable 'sd'
make[1]: *** [vo_ivtv.o] Error 1

Пришлось сконфигурировать без оной возможности, т.е.
./configure --disable-ivtv

Т.к. на сервере на не нужен mplayer а только menconver, то можно настроить при помощи строки

./configure --disable-ivtv --disable-mplayer

Для полного счастья необходима утилита flvtool, которая создает индексы в FLV файлах, что позволит использовать перемотку без кеширования полного файла,  а также ruby который необходим для запуска утилиты.

После установки flvtool можно конвертировать видео в FLV при помощи 2-х комманд:

mencoder \
orig.ext \
-ofps 25 \
-o dest_file.flv \
-of lavf \
-oac mp3lame \
-lameopts abr:br=64 \
-srate 22050 \
-ovc lavc \
-lavcopts vcodec=flv:keyint=50:vbitrate=300:mbd=2:mv0:trell:\
v4mv:cbp:last_pred=3 -vf scale=640:480

Данная комманда конвертирует видеофайл orig.ext в dest_file.flv. После этого нужно добавить индексы при помощи

flvtool2 -UP dest_file.flv

И вуаля - все работает(тестирование проводилось при помощи VLC, который спокойно играет потоковое видео).

Для показа видео на сайте можно использовать любой Flash-плеер, лично я использую JW, удобный для себя плеер можно выбрать здесь .

ЗЫ: наткнулся в интернете на статью, где написано что flvtool подходит только для небольших файлов, т.к. первоначально загружает весь видео-файл в память и только после начинает с ним работать, как аналог - предлагают использовать утилиту yamdi.
ЗЫЫ: для конвертации видео для PSP можно использовать следующие настройки (записать в  ~/.mplayer/mencoder.conf ) (стандартным плеером не проигрывает, а вот PMPlayer Advance(PPA) играет на ура):
[psp]
profile-desc="PSP MPEG4 encoding profile."
vf=harddup,dsize=16/9,scale=480,scale=:272,expand=480:272
ofps=30000/1001
ovc=lavc=1
oac=lavc=1
lavcopts=aglobal=1:vglobal=1:vcodec=mpeg4:acodec=libfaac:vbitrate=800:threads=4
of=lavf=1
lavfopts=format=mp4
af=lavcresample=24000,channels=2
srate=24000
msglevel=all=-1
Но для сих деяний необходимо установить аудио кодек aac и видео кодек x264


для плеера iRiver E150
mencoder INFILE.SOMETHING -vf scale=320,expand=320:240 -oac mp3lame -lameopts abr=128 -ovc xvid -xvidencopts bitrate=600:max_bframes=0:vhq=4 -of avi -o OUTFILE.AVI

9 янв. 2010 г.

Настройка Zend Studio в linux на примере OpenSuse

Скачав и установив себе Zend Studio 7.1.0 и посмотрев в свойства установки обнаружил что данная среда разработки крутится под jre-1.5, и решил поставить его на jre, которая находится в системе(1.6). Все оказалось просто:
слил последнее обновление для jre вот отсюда
установил сие обновление (подробная инструкция лежит по ссылке на странице для скачивания)
вставил запись в конфигурацию Zend (/usr/local/Zend/ZendStudioforEclipse-6.X.X/ZendStudio.ini) следующего содержания
-vm
/usr/java/jre1.6.0_17/lib/amd64/server/libjvm.so

как и было указано на офф сайте
Ну и для полного счастья можно ознакомится с полезностями по ускорению работы Zend Studio.
Для сокрытия папок .svn в проекте необходимо задать в PHP Explorer для данного проекта build path -> configure inclusion/exclusion filters **/.svn/, что позволит исключить папки .svn("**/" задает рекурсию)
PS: Все старания напрасны - Зенд Студио никак не хочет билдить проекты на неродном jre.