[英]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.