Avatar de l’utilisateur
killian
Touillette
Messages : 5
Enregistré le : 08 Sep 2017, 19:31
Contact : Site Internet

Re: Rendu de 10 000 vidéos

11 Sep 2017, 18:21

Eh beh... Vraiment hors norme comme projet. Mais ça aurait pu être pire comme tu dis (en 1080p).

Grreg a écrit :Alors moi je n'utilise pas ffmpeg principalement parce que j'ai pas l'habitude d'utiliser le shell (je passe par AME, ou plus ponctuellement par BG Renderer Pro, qui prémâche tout le travail), mais si quelqu'un développait un script ou un utilitaire capable de faire tout ce que tu dis (repérer les images corrompues et compiler les séquences d'images avec le son pour sortir un export dans un dossier défini) mais avec une interface, alors j'achète direct ! :) (je suis un peu réfractaire aux lignes de commandes, même si c'est très pratique quand on les maîtrise, j'en convient).


Oui je comprends et, même si je suis curieux d'avoir d'autres avis sur le sujet, je suspecte que la majorité des motion designers sont dans ton cas, à savoir, préférence pour l'interface graphique.

L'argument principal en faveur de la ligne de commande pour cet outil en particulier (le module de rendu en tout cas) c'est qu'il est censé pouvoir fonctionner de manière autonome sur des VPS (Virtual Private Servers; comme ceux offerts par AWS, Digital Ocean, OVH, etc.) en parallèle. Si il faut se connecter à chaque VPS séparément pour administrer manuellement chaque instance de l'outil via une interface graphique ça en défait complètement l'intérêt.

Après on peut imaginer une version GUI du même outil destiné uniquement à être utilisé en local, mais ça aurait très peu d'avantages comparé à ce qui existe déjà puisqu'avec la fonction "Post render action > Command" de BG Renderer on peut déjà utiliser pngcheck et ffmpeg pour vérifier et compresser les séquences d'images qui sortent d'After Effects. Il n'y aurait donc comme fonction supplémentaire que la possibilité de rendre plusieurs projets After Effects au lieu d'un seul comme avec BG Renderer. Difficile de justifier l'investissement en temps de développement juste pour cette fonctionnalité supplémentaire.

Par contre, si le module de rendu (ce qui est installé et lancé sur chaque VPS) doit forcément être en ligne de commande, le programme qui orchestre ces modules de rendus, pourrait, lui, être accessible via une interface graphique vu qu'il ne serait installé que sur la machine locale de l'utilisateur. Le rôle de ce programme serait d'utiliser un compte payant chez un cloud service provider (AWS, Digital Ocean, OVH, etc.) pour démarrer un nombre défini de serveurs (VPS), installer le module de rendu et une copie du ou des projets after effects avec les assets sur chacun d'entre eux, puis lancer le module de rendu et en surveiller l'avancement. Les modules de rendu de chaque serveur s'occuperaient de générer les livrables vidéo (aerender > pngcheck > ffmpeg) qui seraient ensuite téléchargés par l'orchestrateur sur la machine locale.

Bref, une interface graphique serait envisageable pour certaines parties et pas d'autres, mais si j'ai bien compris ce n'est pas la partie qui t'intéresse le plus Grreg. Et j'imagine que ce genre d'outil de cloud rendering ne serait utile que pour une minorité de très gros projets malheureusement.

Est-ce que je me trompe et il y en a que ça intéresserait y compris pour leur rendu habituels ?
Juste le module de rendu ? Ou bien aussi le cloud rendering ?
Très curieux d'avoir des retours là dessus.
0

Avatar de l’utilisateur
Grreg
Touillette
Messages : 7
Enregistré le : 03 Oct 2015, 11:37
Localisation : Paris
Contact : Site Internet Twitter

Re: Rendu de 10 000 vidéos

11 Sep 2017, 19:55

Pour le cloud rendering, je confirme que ça ne va pas m'intéresser, je me débrouille toujours très bien avec ma machine en local (je fais essentiellement de la 2D, donc pas super lourd en termes de rendu), le projet qui a initié ce post étant le premier de ce type qu'on me demande en 8 ans de motion. Mais si mon client reviens vers moi avec une nouvelle commande de plusieurs milliers de vidéos, je pense que je ferais appel à toi ;)

Après, je serais curieux de savoir ce qu'il faut taper dans les paramètres de BGRenderer pour lancer un pngcheck et ffmpeg (simplement marquer "pngcheck" ? =P)
0
"Creativity is intelligence having fun." - Albert Einstein

Avatar de l’utilisateur
killian
Touillette
Messages : 5
Enregistré le : 08 Sep 2017, 19:31
Contact : Site Internet

Re: Rendu de 10 000 vidéos

12 Sep 2017, 22:22

Grreg a écrit :Après, je serais curieux de savoir ce qu'il faut taper dans les paramètres de BGRenderer pour lancer un pngcheck et ffmpeg (simplement marquer "pngcheck" ? =P)


Haha presque ;)

Pour toutes les commandes ci-dessous, il faudra activer "Escape keywords in command line" et utiliser l'option "Per Comp".

Si tu veux uniquement checker une séquence d'image PNG tu peux utiliser la commande suivante:

Code : Tout sélectionner

pngcheck [outputFilePath]*.png


Pour ce que j'avais mentionné sur facebook, c'est-à-dire checker les images puis créer une vidéo h264 à partir de la séquence d'images et d'un fichier audio, la commande est un peu plus longue:

Pour 1 render item "comp" avec 2 output modules:
- Format: WAV // Output to: output_name.wav
- Format: PNG Sequence // Output to: output_name_[#####].png

Code : Tout sélectionner

cd [outputFilePath] && pngcheck -q [outputFileNameNoExt]*.png && ffmpeg -i [outputFileNameNoExt].wav -thread_queue_size 512 -f image2 -framerate 25 -i [outputFileNameNoExt]_%05d.png -vcodec libx264 -pix_fmt yuv420p -crf 18 -b:v 800k -threads 0 -y [outputFileNameNoExt].mp4


Le codec h264, le framerate de 25fps, le padding de 5 zeros, et le bitrate de 800k sont à paramétrer au cas par cas (les valeurs que j'ai choisis sont juste un exemple).

Attention au nom des output modules ("Output to"):
BGRenderer utilise un keyword par render item, pas par output module. Donc le keyword [outputFileNameNoExt] fait toujours référence au champ "Output to" du premier output module. Du coup, deux options:
- soit le fait que le nom des images et le nom du fichier audio soient le même ne pose pas de problème et auquel cas il est possible d'utiliser la commande que j'ai donné tel quel à condition que tous les output modules aient le même nom (comme dans mon example "output_name").
- soit les noms des images et du fichier audio doivent absolument être différents (pour d'autres raisons naming conventionsm, pipeline, etc.), auquel cas il faudra, au lieu d'utiliser les keywords [outputFileNameNoExt] et [outputFileName], "hardcoder" les noms des output modules directement dans la commande. Par exemple:

Code : Tout sélectionner

cd [outputFilePath] && pngcheck -q imgseq_*.png && ffmpeg -i soundtrack.wav -thread_queue_size 512 -f image2 -framerate 25 -i imgseq_%05d.png -vcodec libx264 -pix_fmt yuv420p -crf 18 -b:v 800k -threads 0 -y deliverable.mp4

Le problème avec la deuxième solution étant que, si il y a plusieurs render items dans la render queue à rendre d'un coup, BGRenderer va utiliser les noms qui ont été hardcodés dans ses paramètres pour tous les render items, ce qui va générer des erreurs avec pngcheck et/ou ffmpeg. Donc à moins que je sois passé à coté de quelque chose ça me semble être une option viable que si on rend les render items manuellement i.e. un par un, en hardcoant de nouveaux noms dans les paramètres de BGRenderer entre chaque rendu.

Limitation de BGRenderer: utiliser une start frame autre que 0 ou 1
Une des raisons pour laquelle je préfère utiliser aerender directement, c'est parce qu'on ne peut pas passer la numéro de la frame de départ à ffmpeg de manière automatique, étant donné que BGRenderer n'as pas de keyword du type [StartFrame] (en plus des autres keywords manquants comme comp-framerate et des noms séparés pour les modules). Si on ne renseigne pas l'option -start_number dans la commande (comme mon example plus haut), ffmpeg va essayer de lire les images à partir du numéro 0 et va rencontrer une erreur si la séquence d'image ne commence pas par une start frame entre 0 et 4 (0 plus une marge d'erreur). C'est possible d'éviter l'erreur en utilisant l'option "-start_number 200", par exemple, mais en hardcodant cette valeur on retombe dans le même cas que celui détaillé ci-dessus, avec les même problèmes.

Re-faire le rendu des images corrompues:
Après pour rendre à nouveau les images qui ne passent pas la vérification de pngcheck c'est possible mais un peu plus compliqué et surtout à faire au cas par cas parce que la commande va dépendre de MacOS vs Windows, de la version d'After Effects à utiliser et de la façon dont sont organisé les fichiers. Mais pour ceux que ça intéresse: une façon de procéder serait de faire une boucle for en utilisant pngcheck individuellement sur chaque image de la séquence, et si il échoue, récupérer le numéro de la frame en question, puis lancer aerender avec les options -s et -e pour spécifier la frame corrompue.
0

Retourner vers « Rendus »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité