Comment entrer un fichier réseau dans ffmpeg

9

Mon problème est le suivant. J'ai accès à un serveur qui héberge de nombreux fichiers vidéo, la plupart d'entre eux sont très volumineux et mal compressés. J'ai l'intention d'en faire une copie de taille réduite de plus petite taille sur ma machine locale pour un meilleur accès.

Le problème est que le serveur n'a pas d'accès ftp. Je peux scp les fichiers sur ma machine, puis utiliser ffmpeg pour réduire la taille, mais je manquerai d'espace si je copie tous les fichiers localement.

Je cherche un moyen d'entrer directement un fichier réseau dans ffmpeg, de cette façon je pourrai écrire un script qui me donnera du jour au lendemain toutes les vidéos en taille réduite.

saketrp
la source
Vous devriez éditer la question: en l'état, c'est un "XYProblem": demander de faire Y, quand vous voulez vraiment faire X. Vous voulez vraiment entrer un fichier réseau à distance, pas "en utilisant scp" (Cela ressemble à: " comment puis-je me raser la barbe en utilisant un vélo ": le vrai besoin est de raser la barbe, pas vraiment en utilisant un vélo ^^) Ne mélangez pas votre besoin avec les moyens de le faire (afin que vous puissiez trouver de meilleurs moyens, en utilisant les gens !)
Olivier Dulac
Voir les réponses de Flup et cpugeniusmv pour les bonnes façons de le faire. Cependant, si vous avez un goulot d'étranglement du réseau, il serait judicieux de compresser côté serveur, puis de transférer la version compressée sur le réseau (si ffmpeg existe sur cette machine).
orion

Réponses:

10

Vous pouvez utiliser sshfspour faire apparaître les fichiers distants dans un répertoire sur la machine locale.

Vous ne dites pas quelle distribution vous utilisez sur votre client, mais cela est extrait de la documentation Ubuntu sshfs :

  1. Installez le sshfspackage ( aptitude install sshfs)
  2. Ajoutez votre utilisateur au fusegroupe ( sudo gpasswd -a username fuse)
  3. Montez le système de fichiers à l'aide de la sshfscommande

Pour l'utiliser sshfs, créez-vous un répertoire (nous l'appellerons ainsi /mountpoint), et faites

sshfs -o idmap=user remote_user@remote_server:/remote/directory /mountpoint

Les fichiers distants apparaîtront maintenant dans /mountpoint, mais sont en fait toujours sur le serveur distant. Toutes les modifications que vous apportez seront effectuées à distance et non localement.

Pour démonter le répertoire, faites

fusermount -u /mountpoint
Flup
la source
6

Si vous avez un accès ssh au système distant, vous pouvez faire quelque chose comme

ssh server cat path/to/video | ffmpeg -i - [...]

La commande -ffmpeg lit depuis stdin au lieu d'un fichier.

Attention, tous les formats ne prennent pas en charge les canaux. Voir /programming/12999674/ffmpeg-which-file-formats-support-stdin-usage

cpugeniusmv
la source
Le périphérique vidéo peut ne pas prendre en charge la taille de bloc utilisée par 'cat' - si vous obtenez une erreur, utilisez 'nc' au lieu de 'cat' - voir aussi stackoverflow.com/a/46362136/1755628
MikeW