
Моя проблема в следующем. У меня есть доступ к серверу, на котором размещено много видеофайлов, большинство из них очень большие и плохо сжатые. Я собираюсь сделать уменьшенную копию меньшего размера на своей локальной машине для лучшего доступа.
Проблема в том, что у сервера нет доступа по ftp. Я могу скопировать файлы на свою машину, а затем использовать ffmpeg для уменьшения размера, но у меня закончится место, если я скопирую все файлы локально.
Я ищу способ напрямую вводить сетевой файл в ffmpeg, таким образом я смогу написать скрипт, который за одну ночь даст мне все видео в уменьшенном размере.
решение1
Вы можете использовать его sshfs
для отображения удаленных файлов в каталоге на локальном компьютере.
Вы не указали, какой дистрибутив вы используете на своем клиенте, но это списано сдокументация Ubuntu sshfs:
- Установить
sshfs
пакет (aptitude install sshfs
) - Добавьте своего пользователя в
fuse
группу (sudo gpasswd -a username fuse
) - Смонтируйте файловую систему с помощью
sshfs
команды
Чтобы использовать sshfs
, создайте себе каталог (назовем его /mountpoint
), и выполните
sshfs -o idmap=user remote_user@remote_server:/remote/directory /mountpoint
Удаленные файлы теперь будут отображаться в /mountpoint
, но на самом деле они все еще находятся на удаленном сервере. Любые внесенные вами изменения будут сделаны удаленно, а не локально.
Чтобы размонтировать каталог, выполните:
fusermount -u /mountpoint
решение2
Если у вас есть доступ по SSH к удаленной системе, вы можете сделать что-то вроде этого:
ssh server cat path/to/video | ffmpeg -i - [...]
Заставляет -
ffmpeg читать из stdin вместо файла.
Однако следует помнить, что не все форматы поддерживают каналы. См.https://stackoverflow.com/questions/12999674/ffmpeg-which-file-formats-support-stdin-usage