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

9

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

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

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

saketrp
источник
Вы должны отредактировать вопрос: в его нынешнем виде это «проблема XY»: запрашивать Y, когда вы действительно хотите сделать X. Вы действительно хотите вводить сетевой файл удаленно, а не «используя scp» (звучит как: « Как я могу сбрить бороду, используя велосипед »: реальная необходимость - это брить бороду, а не использовать велосипед ^^. Не смешивайте свою потребность со средствами для этого (чтобы вы могли найти лучшие средства, используя людей обратная связь!)
Оливье Дюлак
Смотрите ответы Flup и cpugeniusmv, чтобы узнать, как это сделать. Однако, если у вас есть узкое место в сети, имеет смысл сжимать на стороне сервера и затем передавать сжатую версию по сети (если на этой машине существует ffmpeg).
Орион

Ответы:

10

Вы можете использовать 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
Flup
источник
6

Если у вас есть SSH доступ к удаленной системе, вы можете сделать что-то вроде

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

В -причинах FFmpeg для чтения из стандартного ввода вместо файла.

Однако, не все форматы поддерживают каналы. См. Https://stackoverflow.com/questions/12999674/ffmpeg-which-file-formats-support-stdin-usage

cpugeniusmv
источник
Видеоустройство может не поддерживать размер блока, используемый «cat» - если вы получаете ошибку, используйте «nc» вместо «cat» - см. Также stackoverflow.com/a/46362136/1755628
MikeW