Насколько хорошо FFmpeg масштабируется? Есть примеры? - PullRequest
1 голос
/ 30 января 2010

В настоящее время я работаю на стороне сервера проекта дополненной реальности. Это очень похоже на http://www.livingsasquatch.com/. Я использую PHP / MySQL и FFmpeg для захвата видео с веб-камеры и кодирования его в .flv.

В основном Flash загружает видео в виде длинной серии изображений .jpg. Затем PHP берет эти изображения, генерирует несколько миниатюр и пропускает их через FFmpeg, который преобразует их в один файл .flv.

Вот код FFmpeg:

$ffmpeg_images = $image_directory.'/image%d.jpg';

@unlink($video_directory."/$video_id.flv"); 
$ffmpeg_video = $video_directory."/$video_id.flv";
$ffmpeg_string = FFMPEG_PATH." -f image2 -i $ffmpeg_images -f flv $ffmpeg_video";

@exec($ffmpeg_string);

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

Кто-нибудь имеет опыт работы с FFmpeg на сайте с высоким трафиком?

Есть ли лучший способ обработки этого типа преобразования веб-камеры в .flv?

Есть ли примеры использования FFmpeg на сайте с высоким трафиком?

Спасибо за ваше время!

1 Ответ

2 голосов
/ 31 января 2010

Ваш фундаментальный рабочий процесс кажется мне вменяемым. Я уверен, что есть другие подходы. Просто серия пулевых пунктов, чтобы ответить на ваш вопрос:

  • FFmpeg - лидер кодирования видео ; Возможно '' 1007 * лидер. Вам не следует беспокоиться о том, что это само по себе является проблемой, а больше о том, как вы его используете, ваши параметры и т. Д.
  • Параметры FFmpeg вашего скрипта выше по умолчанию. Вы можете получить лучшую, более эффективную производительность, если вы попробуете другие параметры. Здесь очень много. Вам следует потратить некоторое время на настройку параметров FFmpeg.
  • Кодирование видео по своей природе очень сильно загружает процессор. Если у вас будет какой-либо объем, у вас будет план для него. Это означает выполнение некоторых тестов, запись некоторых показателей и составление прогнозов. Это также означает уделять пристальное внимание вашему оборудованию. Например: новый процессор Intel Core i7 абсолютно не уступает кодированию видео - в раз, * в 1017 * раз быстрее, чем эквивалентный Core 2 подсчет ядер в МГц *
  • У вас должна быть возможность запускать задания FFMpeg при процессах с более низким приоритетом , чем у вашего веб-сервера, и т. Д. Это сохранит ваш сервер быстрым, даже если он настроен на 100% использования.
  • Если вы действительно собираетесь обрабатывать объемный трафик, я настоятельно рекомендую переместить работу FFmpeg на вспомогательные выделенные серверы кодирования. В зависимости от вашего трафика вам может даже понадобиться ферма кодирования.

Таким образом, мне кажется, что ваши вопросы больше связаны с архитектурой системы и настройкой параметров энкодера .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...