2 votes

Utilisation d'automator et de handbrake cli pour convertir automatiquement des vidéos

J'essaie d'automatiser le processus de conversion vidéo en utilisant Automator et la version CLI de Handbrake. J'essaie d'implémenter la fonctionnalité qui fait que chaque fois qu'une vidéo est téléchargée dans mon dossier Dropbox sur mon PC, elle est convertie et placée dans un autre dossier. Actuellement, je le teste avec un dossier de test (qui n'est pas sur Dropbox, je ne fais que copier des fichiers dans ce dossier pour le tester). Lorsque je place un seul fichier ou plusieurs fichiers dans le dossier simultanément, cela fonctionne. Mais quand je mets un fichier (ou plusieurs) et que script s'exécute c'est-à-dire qu'il convertit les vidéos et que je mets un autre fichier dans le dossier alors pour ce nouveau fichier script n'est jamais appelé donc la nouvelle vidéo n'est pas convertie.

Alors comment puis-je réaliser cette fonctionnalité que lorsque script est en cours d'exécution et qu'un nouveau fichier est ajouté, une autre instance de script est lancée pour le nouveau fichier.

De plus, le nouveau fichier est enregistré avec seulement le premier mot du nom si celui-ci comporte plusieurs mots (c'est-à-dire s'il est brisé par un espace).

Voici la capture d'écran de la configuration de mon automate :

Automator Image

Merci d'avance pour votre aide.

Voici mon script du shell d'exécution script comme vous l'avez demandé @:Tony Williams

for f in "$@"
do
    Applications/HandBrakeCLI -i "$f" -t 1 --angle 1 -c 1 -o "/Users/abc/Desktop/TestVidDest/$(basename $f)"  -f mp4  -4  -O  --decomb="fast" -w 1280 -l 720 --modulus 16 -e x264 -b 3800 -2  -T  --cfr -a 1 -E faac -6 dpl2 -R 48 -B 128 -D 0 --gain 0 --audio-fallback ffac3 --x264-preset=slow  --x264-profile=high  --x264-tune="film"  --h264-level="4.0"  --verbose=1
done

0 votes

Il est presque impossible de lire cette étape du shell script. Pourriez-vous coller uniquement le texte dans votre question ?

0 votes

Le problème vient probablement du fait que Automator n'est pas déclenché par les nouveaux fichiers, et non du shell script. Pour tester cela, pouvez-vous remplacer le contenu de la balise for boucle avec sleep 30 && mv "$f" /tmp et voir si tous les fichiers sont copiés ou seulement ceux que vous avez mis en premier ?

1 votes

@patrix merci pour votre réponse ! même problème ici aussi. cela fonctionne si je mets des fichiers et puis j'attends qu'ils soient déplacés et puis je mets de nouveaux fichiers. mais ne fonctionne pas quand je mets certains fichiers et pendant qu'ils sont déplacés (c'est-à-dire script est en cours d'exécution) je mets d'autres fichiers puis les nouveaux fichiers ne sont pas déplacés.

3voto

Graham Miln Points 39606

Processus en arrière-plan

Idéalement, votre script doit se terminer le plus rapidement possible. Le moyen le plus simple est de dériver le traitement des films vers des processus d'arrière-plan. Vous pouvez le faire en ajouter un espace et une esperluette & à la fin de votre HandBrakeCLI ligne.

Déplacement avant traitement

Toutefois, cela ne résout pas le problème de l'ignorance des nouveaux fichiers. En fait, vos fichiers pourraient maintenant être traités deux fois si le traitement n'est pas terminé avant l'apparition du nouveau fichier suivant.

Votre script doit déplacer chaque nouveau fichier vers un autre dossier non surveillé avant de commencer le traitement. Pensez à ajouter un mv avant votre HandBrakeCLI ligne. Vous pouvez également demander à Automator d'effectuer le déplacement.

Le dossier de destination doit idéalement se trouver sur le même lecteur, afin qu'il se termine rapidement et ne retarde pas le script.

0voto

Raymond Holguin Points 141

Je recommande vivement l'ouvrage de Don Melton (ancien chef de Safari chez Apple) intitulé transcode-vidéo script pour la conversion de fichiers vidéo. Le sujet et le script sont traités en profondeur dans le podcast Vector d'iMore, épisode 22 .

Pour automatiser, le script pourrait être enveloppé dans une Folder Action, ou voir le commentaire Gist de Don (24 juin) sur la façon dont il fait des transcodes par lots.

0voto

konqui Points 876

Gardez également à l'esprit qu'il y a HandBreakeBatch qui, comme son nom l'indique, est destiné à faire du traitement par lots HandBreak.

Mais comme le dit le développeur sur son site web http://www.osomac.com/2013/08/08/handbrake-adds-real-batch-processing/

Habdbreak devrait maintenant supporter le traitement par lots par eux-mêmes.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X