Sauter le répertoire temporaire ou le modifier au moment de l'exécution avec FFMPEG

4

Voir l'édition en bas. Certaines informations ci-dessous sont fausses.

Existe-t-il un moyen de faire en sorte que FFMPEG écrit directement sur la destination et ignore le répertoire tmp?

Sinon, y a-t-il un moyen de choisir le répertoire temp au moment de l'exécution? Dites que je voulais utiliser à la /mnt/hgfs/videos/tmpplace du /tmprépertoire.

Je sais qu'avec ma situation, je peux faire un certain nombre de choses pour résoudre le problème, mais je veux voir si je peux faire l'une des choses ci-dessus en premier.

J'ai une machine virtuelle qui utilise ffmpeg pour transcoder des fichiers. Je dois combiner plusieurs fichiers volumineux et les transcoder. Le fichier combiné peut dépasser 60 Go. L'espace disque de la machine virtuelle est de 46 Go, ce qui est suffisant car j'ai toutes les vidéos (entrée et sortie) sur un drobo monté sur /mnt/hgfs/videos. Lorsque je lance mes ffmpeg concat15 fichiers de 4 Go, j'ai un fichier de 60 Go. FFMPEG écrit d’abord /tmpdans le répertoire puis le déplace dans le répertoire de destination. Parce que le /tmprépertoire se trouve sur le système de 46 Go, il est saturé et FFMPEG se bloque.

Quelques solutions de rechange pouvant aider d’autres personnes ayant des problèmes similaires: (je ne souhaite pas les utiliser pour mon problème)

1) Suivez les étapes décrites ici pour recompiler FFMPEG avec un répertoire temporaire différent.

2) Suivez ceci pour mv /tmpsur un lecteur plus grand et faites un lien symbolique vers celui-ci /tmp.

et dans mon cas, je pourrais tout simplement: 3) transcoder les vidéos puis les concatater avec MP4Box ou FFMPEG afin que vous n’ayez jamais à travailler avec ce gros fichier.

EDIT: Je me suis trompé tout le temps.

FFMPEG n'écrit pas le fichier pour /tmple déplacer ensuite vers la destination. J'utilise un projet de nœud qui appelle FFMPEG, mais il définit la destination sur /tmppuis, lorsque FFMPEG a terminé le transcodage de la vidéo, le projet de nœud le déplace vers la destination que je souhaite. Ainsi, pendant tout ce temps, FFMPEG n’utilisait pas le /tmprépertoire.

DutGRIFF
la source

Réponses:

1

Dans le premier lien que vous avez donné, ils ont un problème avec la compilation ffmpeg, pas en cours d'exécution. Le compilateur et ffmpegdoit utiliser le répertoire temp du système. Donc, tout comme le fait de changer la TMPDIRvariable lui a permis de compiler correctement, cela devrait lui permettre de fonctionner correctement pour vous. L'emplacement du répertoire temporaire est stocké dans la variable d'environnement TMPDIRou TMP.

Nattgew
la source
Je sais ça. Mais ne compilez-vous pas dans la construction de ffmpeg. Est-ce que je n'aurais pas le changement qui serait ensuite recompilé pour que cela m'aide?
DutGRIFF
J'ai examiné de plus près ce lien et modifié la réponse pour la rendre plus claire.
Nattgew
Les liens ne faisaient que montrer d'autres solutions qui pourraient aider d'autres personnes. Je sais que je peux modifier la valeur de TMPDIR et recompiler pour que FFMPEG utilise un répertoire temporaire différent, mais cela ne semble pas correct. Il semble que FFMPEG aurait un moyen intégré de spécifier le répertoire tmp au moment de l'exécution. Voulez-vous dire que je peux simplement changer TMPDIR et exécuter ffmpeg et qu'il utilisera ce répertoire temporaire?
DutGRIFF
Cela devrait fonctionner. Votre lien concernait le compilateur ne fonctionnait pas, comme dans le compilateur nécessaire pour placer des fichiers temporaires dans le répertoire temporaire. Je ne pense pas que ffmpeg ait un emplacement de répertoire temporaire compilé.
Nattgew
Alors ... tu as pas mal raison. +1 pour m'aider. Je me suis toujours trompé. FFMPEG n'est même pas ce qui le met dans le /tmprépertoire. FFMPEG n'utilise même pas le répertoire tmp. J'utilise un projet de noeud qui appelle FFMPEG. Ce programme utilise /tmpcomme destination pour FFMPEG, puis le copie dans la destination réelle.
DutGRIFF