Главная > Сервер под Windows > Сборка расширения ffmpeg-php (php_ffmpeg.dll) для PHP 5 на Windows
Сборка расширения ffmpeg-php (php_ffmpeg.dll) для PHP 5 на Windows11-10-2010, 12:28. Разместил: kuper |
Сборка расширения ffmpeg-php (php_ffmpeg.dll) для PHP 5 на Windows Рабочее окружение: * Microsoft Windows XP SP 2 * Microsoft Visual Studio 2005 Express Edition - http://www.microsoft.com/express/2005/download/default.aspx * Microsoft Platform SDK - http://www.microsoft.com/downloads/details.aspx?familyid=0baf2b35-c656-4969-ace8-e4c0c0716adb Необходимые файлы: * Исходные коды PHP 5.2.5 - http://www.php.net/downloads.php * Дистрибутив PHP 5.2.5 для Windows - http://www.php.net/downloads.php * Исходные коды ffmpeg-php - http://ffmpeg-php.sourceforge.net/ * Shared библиотеки и заголовочные файлы FFmpeg для Windows (обязательно LGPL) - http://ffmpeg.arrozcru.org/builds/ * Заголовочные файлы inttype.h и stdint.h - http://msinttypes.googlecode.com/svn/trunk/inttypes.h, http://msinttypes.googlecode.com/svn/trunk/stdint.h Подготовка рабочего окружения. Создайте рабочую папку, в которой будут размещаться все необходимые файлы, например, C:\Development\PHP\ffmpeg. Распакуйте туда исходные коды PHP, дистрибутив PHP, исходные коды ffmpeg-php, библиотеки и заголовочные файлы FFmpeg. Также положите в эту папку заголовочные файлы inttype.h и stdint.h. Создайте новый проект в MVS. Тип проекта – Win32, шаблон – Win32 Project. Введите имя проекта, например: php_ffmpeg (по имени будущей dll). Укажите в качестве места расположения созданную ранее папку. В окне Application Wizard перейдите на вкладку Application Settings. Установите Application Type – DLL, Additional Options – Empty Project. Завершите создание проекта, нажатием кнопки Finish. В окне Solution Explorer добавьте в папку Header Files заголовочные файлы ffmpeg-php: ffmpeg_animated_gif.h ffmpeg_frame.h ffmpeg_movie.h gd.h gd_io.h php_ffmpeg.h Там же добавьте в папку Source Files файлы исходных кодов ffmpeg-php: ffmpeg_animated_gif.c ffmpeg_errorhandler.c ffmpeg_frame.c ffmpeg_movie.c ffmpeg_php.c Приступим к конфигурированию проекта. Откройте меню Project и выберите пункт Properties. Перед вами появится окно настройки проекта. Сразу же откройте вкладку Configuration Properties. Вверху выберите конфигурацию - Release. Перейдите на вкладку C/C++ -> General. В поле Additional Include Directories добавьте следующие пути: C:\Development\PHP\ffmpeg C:\Development\PHP\ffmpeg\php-5.2.5 C:\Development\PHP\ffmpeg\php-5.2.5\TSRM C:\Development\PHP\ffmpeg\php-5.2.5\Zend C:\Development\PHP\ffmpeg\php-5.2.5\main C:\Development\PHP\ffmpeg\ffmpeg-r10461-include\include\ffmpeg C:\Program Files\Microsoft Platform SDK\Include Перейдите на вкладку C/C++ -> Preprocessor и в поле Preprocessor Definitions добавьте следующие строки: PHP_WIN32 ZEND_WIN32 ZTS=1 ZEND_DEBUG=0 HAVE_LIBGD20=1 COMPILE_DL_FFMPEG Теперь перейдите на вкладку Linker -> General. В Additional Library Directories добавьте два пути: c:\Development\PHP\ffmpeg\php-5.2.5-Win32\dev C:\Development\PHP\ffmpeg\ffmpeg-r10461-lgpl-lshared-win32\lib Перейдите на вкладку Linker -> Input и введите в поле Additional Dependencies строки: php5ts.lib avcodec-51.lib avformat-51.lib avutil-49.lib Перейдите на вкладку Linker -> Command Line и в поле Additional options добавьте: /FORCE:MULTIPLE Если вы указали имя проекта отличное от php_ffmpeg, перейдите на вкладку Linker -> General и в поле Output File введите: $(OutDir)\php_ffmpeg.dll Это нужно для того, чтобы не пришлось переименовывать dll после сборки. Попробуйте собрать расширение, нажав клавишу F7. В консоле появятся сообщения о ошибках. Устранение ошибок. fatal error C1083: Cannot open include file: 'config.h': No such file or directory Откройте файл ffmpeg-php-0.5.2.1\ffmpeg_frame.c и найдите следующую строку: #include "config.h" Замените её на: #ifdef HAVE_CONFIG_H #include "config.h" #endif error C2466: cannot allocate an array of constant size 0 Откройте файл php-5.2.5\main\config.w32.h и закомментируйте строку: //#define _USE_32BIT_TIME_T 1 Сборка расширения. После этого попробуйте снова собрать расширение. Больше сообщений об ошибках быть не должно. На выходе получится заветный dll php_ffmpeg\release\php_ffmpeg.dll. Скопируйте его в папку с расширениями PHP и добавьте в php.ini строку: extension=php_ffmpeg.dll Также скопируйте файлы из папки ffmpeg-r10461-lgpl-lshared-win32\dll и файл pthreadGC2.dll в папку system32. Проверить загрузилось расширение или нет можно через консольную версию php. > php -v PHP 5.2.5 (cli) (built: Nov 8 2007 23:18:51) Copyright (c) 1997-2007 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies > php -r "var_dump(extension_loaded('ffmpeg'));" bool(true) Процесс сборки расширения можно считать законченным. Вернуться назад |