So geben Sie eine Netzwerkdatei in ffmpeg ein

8

Mein Problem ist das. Ich habe Zugriff auf einen Server, auf dem viele Videodateien gehostet werden. Die meisten davon sind sehr groß und nicht gut komprimiert. Ich beabsichtige, auf meinem lokalen Computer eine Kopie in kleinerer Größe mit reduzierter Qualität zu erstellen, um einen besseren Zugriff zu erhalten.

Das Problem ist, dass der Server keinen FTP-Zugriff hat. Ich kann die Dateien auf meinen Computer scp und dann mit ffmpeg die Größe reduzieren, aber mir geht der Speicherplatz aus, wenn ich alle Dateien lokal kopiere.

Ich suche nach einer Möglichkeit, eine Netzwerkdatei direkt in ffmpeg einzugeben. Auf diese Weise kann ich ein Skript schreiben, mit dem ich über Nacht alle Videos in reduzierter Größe erhalten kann.

Saketrp
quelle
Sie sollten die Frage bearbeiten: So wie es aussieht, ist es ein "XYProblem": Sie müssen Y tun, wenn Sie wirklich X tun möchten. Sie möchten eine Netzwerkdatei wirklich remote eingeben, nicht "mit scp" (es klingt wie: " Wie kann ich meinen Bart mit einem Fahrrad rasieren? ": Das eigentliche Bedürfnis besteht darin, den Bart zu rasieren, nicht wirklich mit einem Fahrrad ^^) Mischen Sie Ihr Bedürfnis nicht mit den Mitteln, um dies zu tun (damit Sie bessere Mittel finden können, indem Sie die von Menschen verwenden Feedback!)
Olivier Dulac
In den Antworten von Flup und cpugeniusmv finden Sie die richtigen Möglichkeiten. Wenn Sie jedoch einen Netzwerkengpass haben, ist es sinnvoll, auf der Serverseite zu komprimieren und dann die komprimierte Version über das Netzwerk zu übertragen (falls auf diesem Computer ffmpeg vorhanden ist).
Orion

Antworten:

10

Sie können verwenden sshfs, um die Remote-Dateien in einem Verzeichnis auf dem lokalen Computer anzuzeigen.

Sie sagen nicht, welche Distribution Sie auf Ihrem Client verwenden, aber dies ist aus der Ubuntu sshfs-Dokumentation entnommen :

  1. Installieren Sie das sshfsPaket ( aptitude install sshfs)
  2. Fügen Sie Ihren Benutzer der fuseGruppe hinzu ( sudo gpasswd -a username fuse)
  3. Hängen Sie das Dateisystem mit dem sshfsBefehl ein

Erstellen Sie sich zur Verwendung sshfsein Verzeichnis (wir nennen dies /mountpoint) und tun Sie dies

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

Die Remote-Dateien werden jetzt in angezeigt /mountpoint, befinden sich jedoch noch auf dem Remote-Server. Alle Änderungen, die Sie vornehmen, werden remote und nicht lokal vorgenommen.

Gehen Sie wie folgt vor, um die Bereitstellung des Verzeichnisses aufzuheben

fusermount -u /mountpoint
Flup
quelle
6

Wenn Sie SSH-Zugriff auf das Remote-System haben, können Sie so etwas tun

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

Die -Ursachen ffmpeg von stdin anstelle einer Datei zu lesen.

Vorsichtsmaßnahme, jedoch unterstützen nicht alle Formate Pipes. Siehe /programming/12999674/ffmpeg-which-file-formats-support-stdin-usage

cpugeniusmv
quelle
Das Videogerät ist möglicherweise nicht die Blockgröße unterstützen , indem sie ‚Katze‘ verwendet - wenn Sie eine Fehlermeldung erhalten, verwenden Sie ‚nc‘ anstelle von ‚Katze‘ - siehe auch stackoverflow.com/a/46362136/1755628
MikeW