我的问题是这样的。我可以访问托管许多视频文件的服务器,其中大多数文件都非常大并且压缩得不好。我打算在我的本地计算机上制作这些内容的质量降低的较小尺寸副本,以便更好地访问。
问题是服务器没有ftp访问权限。我可以将文件 scp 到我的机器上,然后使用 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 从标准输入而不是文件读取。
但需要注意的是,并非所有格式都支持管道。看https://stackoverflow.com/questions/12999674/ffmpeg-which-file-formats-support-stdin-usage