2010-01-29 5 views
1

Je travaille actuellement sur le côté serveur d'un projet de réalité augmentée. Cela ressemble beaucoup à http://www.livingsasquatch.com/. J'utilise PHP/MySQL et FFmpeg pour capturer la vidéo de la webcam et l'encoder en .flv. Fondamentalement, Flash télécharge la vidéo sous la forme d'une longue série d'images .jpg. PHP prend alors ces images, génère quelques vignettes et les passe à travers FFmpeg qui les convertit en un seul fichier .flv.Quelle est la taille de FFmpeg? Des exemples?

Voici le code 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); 

Cela semble fonctionner bien dans mes tests, mais je ne sais pas comment nous allons ce sera l'échelle. Comme c'est la première fois que j'utilise FFmpeg, je ne sais pas si le codage vidéo de cette façon va mettre le serveur à genoux.

Est-ce que quelqu'un a de l'expérience avec FFmpeg sur un site très fréquenté?

Existe-t-il une meilleure façon de gérer ce type de conversion Webcam en .flv?

Existe-t-il des exemples d'utilisation de FFmpeg sur un site à fort trafic?

Merci pour votre temps!

Répondre

2

Votre flux de travail fondamental me semble sain. Je suis sûr qu'il existe d'autres approches. Juste une série de points de balle pour répondre à votre question:

  • FFmpeg est un encodage vidéo chef; Sans doute 'le' chef. Vous ne devriez pas vous inquiéter que ce soit un problème, mais plutôt sur la façon dont vous l'utilisez, vos paramètres, etc.
  • Les paramètres FFmpeg de votre script ci-dessus sont purement par défaut. Vous obtiendrez peut-être de meilleures performances si vous essayez différents paramètres. Il y a beaucoup de. Vous devriez passer du temps à régler les paramètres FFmpeg.
  • Le codage vidéo est intrinsèquement très gourmand en ressources processeur. Si vous avez un volume, alors vous allez avoir un plan pour cela. Cela signifie exécuter des tests, enregistrer des métriques et faire des projections. Cela signifie également faire très attention à votre matériel. Exemple: Le nouveau processeur Intel Core i7 bascule absolument au codage vidéo - plusieurs fois fois plus vite qu'un noyau de base équivalent au nombre de MHz * Core 2.
  • Vous devriez être en mesure de lancer les tâches FFMpeg à des processus moins prioritaires que votre serveur Web, etc. Cela gardera votre serveur accrocheur, même lorsqu'il est ancré à 100% d'utilisation.
  • Si vous voulez vraiment gérer le trafic de volume, alors je suggérerais fortement de déplacer le travail FFmpeg vers des serveurs de codage auxiliaires dédiés. En fonction de votre trafic, vous pouvez même avoir besoin d'une batterie de codage.

En résumé, il me semble que vos questions sont plus 'l'architecture du système ' et 'réglage des paramètres du codeur' lié.

Je ne peux penser qu'à une autre approche radicalement différente qui réduirait considérablement la charge de codage côté serveur, et qui consisterait à tout gérer du côté client. Mais d'une manière ou d'une autre, je pense que vous avez déjà négligé cette approche.

+0

Merci Stu, cela m'a rassuré :) – Pepper

Questions connexes