如何通过 ssh 或 sftp 管道传输输入和输出,使用 ffmpeg 转码视频文件

如何通过 ssh 或 sftp 管道传输输入和输出,使用 ffmpeg 转码视频文件

我有一台服务器,里面有我想转码为 x265 的视频文件,并且有 ssh/sftp 访问权限。但我不是转码机的 root 用户,因此无法安装sshfs,所以我决定通过 ssh 传输文件(我知道性能问题)。

输入与命令一起使用

ssh -p 1022 USER@SERVER cat input.mkv | ffmpeg -i - -c:v libx265 -preset slow -x265-params crf=21 -c:a copy output.mkv

但是我无法按照以下答案通过 ssh 将输出文件再次保存回服务器:https://superuser.com/questions/839955/piping-output-from-ffmpeg-avconv-over-ssh-to-a-file

ssh -p 1022 USER@SERVER "ssh -p 1022 USER@SERVER cat input.mkv | ffmpeg -i - -c:v libx265 -preset slow -x265-params crf=21 -c:a copy -f matroska pipe:1" | cat > output.mkv

那么我该如何正确地组合这两个管道命令?或者你能想出更智能的方法来访问这些文件吗?

答案1

为了通过 ssh 保存输出,你应该编写如下内容:

mycommand --sentoStdout | ssh user@host 'cat > /to/dest/file.type'

因此,对于你的情况,你应该这样写:

ssh -p 1022 USER@SERVER cat input.mkv | fmpeg -i - -c:v libx265 -preset slow -x265-params crf=21 -c:a copy pipe:1 | ssh -p 1022 USER@SERVER 'cat > output.mkv'

相关内容