繁体   English   中英

如何通过SSH在远程计算机上使用ffmpeg

[英]How do I use ffmpeg on a remote machine via ssh

我的局域网上有三台计算机,

一个正在运行的Ubuntu
一个正在运行的openSuse
和我的服务器运行Archlinux

我只设法使ffmpeg在我的服务器上正常工作。

我想编写一个脚本,假装是在本地计算机上安装ffmpeg ,但实际上只是使用服务器的ffmpeg

例:

在openSuse pc上,我想致电:

ffmpeg -i file.avi out.flv

然后获得预期的正常输出,
但我希望它在archlinux上使用ffmpeg。

关于如何使它起作用的任何建议。
(最好是在Ruby中)

编辑:我已经扩展了此问题到如何通过ssh从shell命令显示进度条

以下是一些选择,最简单的选择是:

  • 在LAN上设置NFS,远程安装服务器上的所有磁盘,然后使用远程安装的名称运行ssh命令。 用户要使用奇怪的名字是负担。

  • 设置NFS,但解析ffmpeg选项以标识输入和输出文件,然后使用诸如realname包(或简单的shell脚本)之类的名称先将名称转换为绝对路径名,然后再转换为远程安装的名称。

  • 不要使用NFS,而是解析ffmpeg选项并使用scp复制输入文件,然后复制输出文件。

我没有很多红宝石,但是这似乎可行!

先决条件,

sudo yum install rubygems
sudo gem install net-ssh net-sftp highline echoe

代码(带注释),

#!/usr/bin/env ruby

require 'rubygems'
require 'net/ssh'
require 'net/sftp'
require 'highline/import'

file = ARGV[ 0 ]                  # filename from command line
prod = file + "-new"              # product filename (call it <file>-new)
rpath = "/tmp"                    # remote computer operating directory
rfile = "#{rpath}/#{file}"        # remote filename
rprod = "#{rpath}/#{prod}"        # remote product
cmd  = "mv #{rfile} #{rprod}"     # remote command, constructed

host = "-YOUR REMOTE HOST-"
user = "-YOUR REMOTE USERNAME-"
pass = ask("Password: ") { |q| q.echo = false }  # password from stdin

Net::SSH.start(host, user, :password => pass) do |ssh|
        ssh.sftp.connect do |sftp|
                # upload local 'file' to remote 'rfile'
                sftp.upload!(file, rfile)

                # run remote command 'cmd' to produce 'rprod'
                ssh.exec!(cmd)

                # download remote 'rprod' to local 'prod'
                sftp.download!(rprod, prod)
        end
end

然后我可以这样运行

dylan@home ~/tmp/ruby) ls
bar  remotefoo.rb*
dylan@home ~/tmp/ruby) ./remotefoo.rb bar
Password: 
dylan@home ~/tmp/ruby) ls
bar  bar-new  remotefoo.rb*

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM