Как ввести сетевой файл в ffmpeg

Как ввести сетевой файл в ffmpeg

Моя проблема в следующем. У меня есть доступ к серверу, на котором размещено много видеофайлов, большинство из них очень большие и плохо сжатые. Я собираюсь сделать уменьшенную копию меньшего размера на своей локальной машине для лучшего доступа.

Проблема в том, что у сервера нет доступа по ftp. Я могу скопировать файлы на свою машину, а затем использовать ffmpeg для уменьшения размера, но у меня закончится место, если я скопирую все файлы локально.

Я ищу способ напрямую вводить сетевой файл в ffmpeg, таким образом я смогу написать скрипт, который за одну ночь даст мне все видео в уменьшенном размере.

решение1

Вы можете использовать его sshfsдля отображения удаленных файлов в каталоге на локальном компьютере.

Вы не указали, какой дистрибутив вы используете на своем клиенте, но это списано сдокументация Ubuntu sshfs:

  1. Установить sshfsпакет ( aptitude install sshfs)
  2. Добавьте своего пользователя в fuseгруппу ( sudo gpasswd -a username fuse)
  3. Смонтируйте файловую систему с помощью 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

Связанный контент