The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Обработка видео на PHP средствами модуля ffmpeg-php (mpeg video php)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: mpeg, video, php,  (найти похожие документы)
From: Saint_Byte Date: Mon, 31 Jul 2007 14:31:37 +0000 (UTC) Subject: Обработка видео на PHP средствами модуля ffmpeg-php Оригинал: http://dotblog.ru/blog_comment/sb/108.xhtml Ffmpeg-php это модуль для php который позволяет делать некоторые вещи с видео. Для того чтоб это штука заработала надо иметь сурцы ffmpeg'а ( в основном сурцы двух библиотек libavcodec и libavformat ибо ffmpeg-php это по сути "гейт" этих библиотек в php ) и собранный с --enable-shared ffmpeg и библиотеку gd2 (нафиг вам только свойства видео - с ГД можно кадры выдирать). Собирается ffmpeg-php просто: tar -xjf ffmpeg-php-X.x.x.tar.gz cd ffmpeg-php-X.x.x/ phpize ./configure && make make install (под рутом ) Далее получаем бинарик ffmpeg.so в папке module . Этот бинарик надо засунуть в каталог который extension_dir в php.ini и прописать в php.ini extension=ffmpeg.so после чего если php как модуль у веб сервера apache перегрузить вебсервер (apachectl restart). Далее делается наблюдаем результаты функции phpinfo() - если там есть что-то про ffmpeg - значить модуль подключился. Теперь в php есть ещё 3 класса от которых можно порождать обьекты. Ну и перевод документации по API.За перевод сильно не пинайте =)) . Оригинальное описание описание API : http://ffmpeg-php.sourceforge.net/apidoc.php ffmpeg_movie обьекта методы. $movie = new ffmpeg_movie(String path_to_media, boolean persistent) Открыть аудио или видео файл и возвратит объект. * path_to_media - Путь к аудио или видео файлу * persistent - Открыть как постоянный ресурс. О постоянных ресурсах читайте в документации по PHP $movie->getDuration() Возвратит продолжительность аудио или видео файла в секундах. $movie->getFrameCount() Возвратит количество кадров (фреймов) аудио или видео файла. $movie->getFrameRate() Возвратит частоту кадров видео в кадрах в секунду (fps - frame persecond) $movie->getFilename() Возвратит путь к видео или аудио файлу $movie->getComment() Возвратит поле комментария из аудио или видео файла $movie->getTitle() Возвратит поле заголовка из аудио или видео файла $movie->getAuthor() псевдоним $movie->getArtist() Возвратит поле "автор" из видео файла или "автор" из ID3 поля mp3 файла $movie->getCopyright() Возвратит поле "авторское право" из аудио или видео файла $movie->getArtist() Возвратит ID3 поле "Артист" из mp3 файла $movie->getGenre() Возвратит ID3 поле "Жанр" из mp3 файла $movie->getTrackNumber() Возвратит ID3 поле "номер дорожки" из mp3 файла $movie->getYear() Возвратит ID3 поле "Год" из mp3 файла $movie->getFrameHeight() Возвратит высоту видео в пикселях $movie->getFrameWidth() Возвратит ширину видео в пикселях $movie->getPixelFormat() Возвратит формат пикселов видео $movie->getBitRate() Возвратит скорость потока(битрейт) видео или аудио файла в битах в секунду $movie->getVideoBitRate() Возвратит скорость потока(битрейт) видео в битах в секунду. Замечание : Работает только с файлами у которых постоянный битрейт $movie->getAudioBitRate() Возвратит скорость потока(битрейт) аудио у видео или аудио файла в битах в секунду. $movie->getAudioSampleRate() Возвратит скорость дискретизации аудио у видео или аудио файла в битах в секунду. $movie->getFrameNumber() Возвратит текущий номер кадра. $movie->getVideoCodec() Возвратит название видео кодека который использован для видео файла как строку $movie->getAudioCodec() Возвратит название аудио кодека который использован видео файл как строку $movie->getAudioChannels() Возвратит количество аудио каналов (1 моно 2 стерео и т д) как целое число $movie->hasAudio() Возвратит логическое значение соответствующие наличию или отсутствию аудио $movie->getFrame([Integer framenumber]) Возвратит кадр из видео как ffmpeg_frame объект. Возратит логическую ложь (false) если кадра нет * framenumber -Номер кадра который надо возратить. Если framenumber не определен то возращается следующий кадр из видео. $movie->getNextKeyFrame() Возвратит следующий ключевой кадр как ffmpeg_frame объект. Возратит логическую ложь (false) если кадра нет ffmpeg_frame object methods $frame = new ffmpeg_frame(Resource gd_image) Создаст обьект ffmpeg_frame из ресурса GD картинки. Замечание : Функция недоступна если нет библитеки GD. $frame->getWidth() Возвратит ширину кадра. $frame->getHeight() Возвратит высоту кадра. $frame->getPTS() alias $frame->getPresentationTimestamp() Возвращает время создания кадра. (Return the presentation time stamp of the frame). $frame->resize(Integer width, Integer height [, Integer crop_top [, Integer crop_bottom [, Integer crop_left [, Integer crop_right ]]]]) Изменяет размер и обрезает кадр (Обрезание встроено в изменение размера картинка ffmpeg и сделал его для полноты) * width - Новая ширина кадра (должено быть натуральным числом) * height - Новая высота кадра (должено быть натуральным числом) * croptop - Удалить [croptop] рядов пикселов с верху кадра. * cropbottom - Удалить [cropbottom] рядов пикселов с низу кадра. * cropleft - Удалить [cropleft] рядов пикселов с лева у кадра.. * cropright Удалить [cropright] рядов пикселов с права у кадра.. Замечание: Обрезание всегда происходит до измения размера кадра. Значения параметров обрезания должны быть натуральными числами. $frame->crop(Integer crop_top [, Integer crop_bottom [, Integer crop_left [, Integer crop_right ]]]) Обрезать кадр. * croptop - Удалить [croptop] рядов пикселов с верху кадра. * cropbottom - Удалить [cropbottom] рядов пикселов с низу кадра. * cropleft - Удалить [cropleft] рядов пикселов с лева у кадра.. * cropright Удалить [cropright] рядов пикселов с права у кадра.. Замечание : Параметры должны быть натуральными числами $frame->toGDImage() Возвращает truecolor GD картинку (ресурс) кадра Замечание : Функция недоступна если нет библитеки GD. ffmpeg_animated_gif $gif = new ffmpeg_animated_gif(String output_file_path, Integer width, Integer height, Integer frame_rate, [Integer loop_count]) Создает новый ffmpeg_animated_gif обьект * output_file_path - Путь в файловой системе куда будет записан анимированный gif . * width - Ширина анимированого gif'а * height - Высота анимированного gif'а * frame_rate - Частота кадров анимированного gif'а в кадрах в секунду * loop_count - Количество повторений анимации. Укажите 0 для бесконечного повторения или пропустите параметр для отключения повторений. $frame->addFrame(ffmpeg_frame frame_to_add) Добавляет кадр в конец анимированного gif'а. * frame_to_add - ffmpeg_frame обьект для добавления в конец анимированного gif'а.

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1, Oleg (??), 12:37, 03/07/2008 [ответить]  
  • +/
    ffmpeg ставил из svn
    ./configure --enable-shared

    ffmpeg-php
    при конфиге выдает варнинг "проверьте собран ли с --enable-shared"

    что ему надо то?

     
  • 2, Oleg (??), 16:56, 03/07/2008 [ответить]  
  • +/
    Решил и инсталил, но теперь при запросе
    php -r ‘phpinfo();’ | grep ffmpeg

    пишет:
    PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib/php/modules/ffmpeg.so’ - /usr/lib/php/modules/ffmpeg.so: undefined symbol: av_free_static in Unknown on line 0

    не видит либу, хотя в php.ihi прописано и ffmpeg.so лежит в extension_dir
    Подскажите как решить…

     
  • 3, alex (??), 11:12, 10/10/2008 [ответить]  
  • +/
    Стоит задача вытащить кадр с определенного места по времени, скажем, на 5-ой секунде. Тупо множу частоту на секунды, и вытаскиваю получившийся номер фрейма - не тут-то было!

    $movie->getFrameCount() и $movie->getFrameRate() очень некорректно работают с различными типми видео
    на flv отдал мне частоту 1000 кадров/сек, вместо реальных 15 кадров/сек
    на wmv - 50 кадров/сек вместо 25 кадров/сек

    Кто что подскажет?
    Спасибо!

     
  • 4, Doktor (??), 01:14, 17/05/2009 [ответить]  
  • +/
    Решение проблемы с функцией toGDImage() в версии 0.6.х - http://vokulov.ru/2009/05/01/ffmpeg-php-%D0%BD%D0%B5-
     
  • 5, puchu (?), 00:17, 16/07/2010 [ответить]  
  • +/
    пасибо тебе афтор
    реально интересно
    теперь анимированные гифы конвертю по правильному
    а до этого юзал тормознутый бред (на шарных хостах правда выбора нету):
    погугли GIFEncoder.class.php GIFDecoder.class.php если интересно
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру