30 votes

Existe-t-il un moyen de répartir les tâches d'encodage x264 sur plusieurs ordinateurs (pour augmenter la vitesse d'encodage) ?

Quelqu'un connaît-il une solution actuelle et active pour encoder des vidéos x264 sur plusieurs ordinateurs (via le réseau) afin d'augmenter les FPS d'encodage ?

Des points pour la multiplateforme et l'open source, mais pour votre information, j'utilise habituellement Windows.


Les programmes dont j'ai entendu parler, et pourquoi je ne pense pas qu'ils soient adaptés :

  • x264farm : Non développé activement. Bonne interface, mais ne supporte pas l'encodage en deux passes, et échoue avec les nouvelles versions de x264.
  • ELDER : Encore une fois, pas activement développé, mais mon problème était qu'il ne fonctionnait pas avec les nouvelles constructions x264, et qu'il était très difficile à configurer (lire : a cessé de fonctionner de manière aléatoire).

Bien que je n'aie pas absolument besoin d'un programme en cours de développement, j'aimerais en avoir un qui supporte l'encodage à deux passages et travaille avec new(er) x264 builds .


Informations complémentaires : Jusqu'à présent, j'ai offert (et attribué !) deux primes distinctes sur cette question depuis que je l'ai postée pour la première fois il y a plus de deux ans, et je n'ai toujours pas trouvé de solution à ce problème. Ce que je recherche, c'est un programme simple qui me permette d'encoder des vidéos x264 en utilisant la puissance de traitement de plusieurs ordinateurs connectés en réseau local. De plus, ce serait bien s'il fonctionnait avec les nouvelles versions de x264 et s'il supportait l'encodage à deux passages.

Si quelqu'un a une réponse actualisée ou une nouvelle solution à ce problème, veuillez la poster et elle sera prise en considération.


Mise à jour de 2016 :

Après une grande partie de mon expérience professionnelle dans le domaine de la vision par ordinateur/machine, je me suis rendu compte que les frais généraux associés à la grande quantité de données/mémoire partagées, et le goulot d'étranglement potentiel qu'ils représentent, pourraient l'emporter sur les avantages potentiels.

Bien que j'aimerais toujours trouver quelque chose qui me permettrait d'exploiter la puissance de calcul inactive de plusieurs appareils, pour l'instant, les encodeurs modernes basés sur le GPGPU constituent une bien meilleure approche si vous avez besoin d'un encodage amélioré/en temps réel. C'est ce que proposent la plupart des plateformes d'encodage vidéo basées sur le cloud (ce qui est une autre alternative si vous êtes adepte du SaaS ou du cloud computing), mais à plus grande échelle.

0 votes

Je travaille toujours sur ce sujet. x264farm est juste le gestionnaire de rendu, il semble que vous devriez être en mesure de placer n'importe quelle version de x264 que vous voulez sur les pc esclaves. Avez-vous essayé, et quelles erreurs se sont produites si vous l'avez fait ?

1 votes

1 votes

Je réalise que c'est un vieux fil de discussion, mais je pense que je devrais partager mon expérience personnelle. Ne distribuez pas un travail à plusieurs machines, c'est une perte de temps, distribuer à plusieurs cœurs diminue déjà les performances, et il y a plusieurs processeurs physiques, puis plusieurs machines, chacune avec un problème d'E/S et de latence. Ceci étant dit, utilisez-le uniquement lorsque c'est vraiment nécessaire, s'il y a plusieurs fichiers (travaux), distribuez-les par fichier, je crois que Squeeze peut distribuer la charge sur plusieurs machines, mais c'est assez cher.

2voto

Steve Paulo Points 8263

Pour Mac OS X 10.5 (je ne suis pas sûr de la compatibilité avec la 10.6), il y avait autrefois VisualHub qui vous permettra de mettre en place un réseau de fermes sur votre réseau local. Maintenant, il n'est plus disponible et ReduxEncoder est apparu pour le remplacer, mais je n'arrive pas à trouver les options pour cela.

1voto

Le fait est qu'AUCUN des développeurs mondiaux n'a, à ce jour, pris la peine d'écrire et de soumettre des correctifs distribués pour le codage générique client/serveur TCP:IP/UDP pour un x264 actuel, à ce jour, il y en a 1745, voir x264.nl/.

le modèle générique client/serveur est bien compris, tout comme la base de code propre de x264, et demander des éclaircissements sur n'importe quel code x264 est une simple question de rejoindre le canal IRC de x264 dev et de demander, en quelques minutes, un ou deux développeurs x264 clés répondront à votre question sur le fonctionnement de cette section de code, et obtiendront même des idées pratiques sur la façon dont vous pourriez réécrire votre code en évolution pour mieux l'adapter au modèle x264 (et x262, un nouvel encodeur Mpeg2 basé sur le cadre de classe mondiale x264 sur lequel on travaille actuellement).

Si vous êtes un développeur, la meilleure chose que vous puissiez faire pour l'avenir de la qualité et de la profession de l'encodage vidéo distribué 32/64 bit x264 est la suivante d'écrire ces patchs client/serveur de base. faire en sorte qu'une instance de x264 ou une application web/GUI distincte s'interface avec le nouveau code API x264 client/serveur que vous écrivez, pour rechercher activement, assigner et transmettre à la volée des sections d'encodage distinctes d'une seule vidéo à tout nouveau code client x264 géré correspondant que vous écrivez également.

vos nouveaux clients/serveurs vraiment distribués n'ont même pas besoin d'être les meilleurs, juste un code C basique mais qui fonctionne parfaitement et qui est testé et utilisé doom10.org/index.php?action=unread

Il y a une chose que les développeurs de x264 semblent adorer faire, c'est de prendre le code C lent existant et d'écrire des versions optimisées, section par section, mais il faut d'abord soumettre le code bêta réel (avec les patchs bienvenus) contre la dernière branche OC.

Cela vaut la peine de s'y intéresser et de faire l'effort de coder ces correctifs pour le serveur x264 et les nombreux clients x264 aujourd'hui, car le x264 vient d'être doté de capacités d'encodage en profondeur 10 bits (ce qui signifie que des profils H.264 intensifs en calcul de haute qualité, haute 10, haute 4:2:2 sont maintenant disponibles pour tout le monde gratuitement avec le x264).

sera optimisé pour une vitesse accrue avec l'assemblage très bientôt http://mailman.videolan.org/pipermail/x264-devel/2010-October/007858.html

mais même une seule machine à 8 cœurs aura du mal à fournir une sortie de la plus haute qualité dans un temps raisonnable avec 1080P, et bientôt 2K et 4K super high Def etc, une option d'encodage natif x264/H.264 distribuée, facile à mettre en place et à utiliser, n'est qu'à un patch ou deux près.

Si vous êtes un développeur, s'il vous plaît, n'attendez pas, faites-le aujourd'hui.

0 votes

En fait, j'ai pensé à faire ça. Le problème majeur n'est pas de faire en sorte que deux ordinateurs effectuent les calculs, mais plutôt de transférer les données de l'ensemble de travail entre les machines. Il est beaucoup plus facile de faire entrer et sortir des données de la RAM sur une seule machine (en nombre de gigaoctets par seconde), mais beaucoup plus lent sur un réseau local (100 mégaoctets par seconde au maximum).

1voto

harrymc Points 394411

Vous pouvez consulter Cluster de codage des médias :

Media Encoding Cluster est la première solution d'encodage Open Source Cluster qui est écrite en C/C++ pour médias distribués (vidéo et audio) Encodage.

Media Encoding Cluster est un codeur vidéo extensible, qui utilise un codeur de grille légère de type peer-to-peer pour pour exploiter la puissance de traitement des PC ordinaires afin de distribuer l'encodage de vidéos hautement vidéo hautement compressée, par exemple MPEG4 et H.264

Il distribue les blocs vidéo sur le réseau aux nœuds clients et de paralléliser la tâche d'encodage pour une fichier sur plusieurs ordinateurs afin de réduire le temps d'encodage par fichier.

Une autre approche est proposée à Nvidia par Badaboom (39,99 $ avec l'essai), également examiné aquí :

Badaboom d'Elemental utilise l'interface CUDA de Nvidia CUDA de Nvidia pour faire une grande partie du travail. de l'extraction de DVD en utilisant le GPU au lieu de votre vieux CPU.

De la même manière, il existe également Avivo Video Converter pour ATI Radeon, décrit dans wikipedia bien que cela puisse demander un peu de travail pour le faire fonctionner.

0 votes

@Breakthrough : Avez-vous regardé ces produits ?

1voto

edusysadmin Points 2208

Bien que cela puisse être une suggestion un peu exagérée, Rhozet Carbon Server peut rassembler plusieurs instances de Carbon Coder pour le travail que vous avez décrit.

Site web pour Rhozet Carbon Server

Plusieurs nœuds Carbon Coder peuvent être configurés comme une ferme de transcodage, contrôlée par un ou plusieurs serveurs Carbon. Carbon Server permet le traitement automatisé des tâches de transcodage à haut volume, le basculement des nœuds Carbon Coder contrôlés par le serveur, ainsi que la gestion de la distribution des tâches, la priorisation des tâches, l'équilibrage de la charge, le transfert FTP, la surveillance du statut et la notification des tâches.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X