Cómo ingresar un archivo de red a ffmpeg


9

Mi problema es este Tengo acceso a un servidor que aloja muchos archivos de video, la mayoría de ellos son muy grandes y no están bien comprimidos. Tengo la intención de hacer una copia de menor tamaño de calidad reducida de estos en mi máquina local para un mejor acceso.

El problema es que el servidor no tiene acceso ftp. Puedo scp los archivos a mi máquina y luego usar ffmpeg para reducir el tamaño, pero me quedaré sin espacio si copio todos los archivos localmente.

Estoy buscando una manera de ingresar directamente un archivo de red a ffmpeg, de esa manera podré escribir un script que durante la noche me dará todos los videos en tamaño reducido.


Debería editar la pregunta: tal como está, es un "XYProblem": pedir hacer Y, cuando realmente quiere hacer X. Realmente desea ingresar un archivo de red de forma remota, no "usando scp" (Suena como: " ¿Cómo puedo afeitarme la barba con una bicicleta? ": la verdadera necesidad es afeitarse la barba, no usar realmente una bicicleta ^^) No mezcle su necesidad con los medios para hacerlo (para que pueda encontrar mejores medios, utilizando comentarios!)
Olivier Dulac

Vea las respuestas de Flup y cpugeniusmv para conocer las formas correctas de hacerlo. Sin embargo, si tiene un cuello de botella en la red, tendría sentido comprimir en el lado del servidor y luego transferir la versión comprimida a través de la red (si existe ffmpeg en esa máquina).
orion

Respuestas:


10

Puede usar sshfspara hacer que los archivos remotos aparezcan en un directorio en la máquina local.

No dice qué distribución está utilizando en su cliente, pero esto se basa en la documentación de sshfs de Ubuntu :

  1. Instalar el sshfspaquete ( aptitude install sshfs)
  2. Agregue su usuario al fusegrupo ( sudo gpasswd -a username fuse)
  3. Montar el sistema de archivos usando el sshfscomando

Para usar sshfs, hazte un directorio (lo llamaremos /mountpoint), y haz

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

Los archivos remotos aparecerán ahora /mountpoint, pero de hecho todavía están en el servidor remoto. Cualquier cambio que realice se realizará de forma remota y no local.

Para desmontar el directorio, haga

fusermount -u /mountpoint

6

Si tiene acceso ssh al sistema remoto, puede hacer algo como

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

Las -causas ffmpeg para leer desde stdin en lugar de un archivo.

Sin embargo, no todos los formatos admiten tuberías. Ver /programming/12999674/ffmpeg-which-file-formats-support-stdin-usage


Es posible que el dispositivo de video no admita el tamaño de bloque utilizado por 'cat'; si obtiene un error, use 'nc' en lugar de 'cat'; consulte también stackoverflow.com/a/46362136/1755628
MikeW
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.