Como faço para usar o ffmpeg em uma máquina remota via ssh
Pergunta
Eu tenho três computadores na minha LAN,
um running ubuntu ,
um running openSuse
e meu servidor executando o Archlinux .
Eu só conseguiu ffmpeg para funcionar corretamente no meu servidor.
Eu gostaria de escrever um script que iria fingir ser um ffmpeg instalação na máquina local, mas seria realmente ser apenas usando do servidor ffmpeg .
no pc openSuse eu gostaria de chamar:
ffmpeg -i file.avi out.flv
e, em seguida, obter a saída normal, como seria de esperar,
mas eu quero que ele use o ffmpeg na archlinux.
qualquer conselho sobre como eu iria chegar a este trabalho.
(De preferência em Ruby)
EDIT: Eu já estendeu essa questão a Como faço para exibir barras de progresso de um comando shell sobre ssh
Solução
Eu não tenho um monte de ruby-fu, mas isso parece funcionar!
Pré-requisitos,
sudo yum install rubygems
sudo gem install net-ssh net-sftp highline echoe
Code (com comentários),
#!/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
E então eu posso executar este como assim,
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*
Outras dicas
Aqui estão algumas opções, mais fácil primeira:
-
Set up NFS em seu LAN, controlado remotamente montar todos os discos em seu servidor, em seguida, executar um comando
ssh
usando o controle remoto montado nomes. O fardo é sobre o usuário a usar os nomes estranhos. -
Set up NFS, mas as opções ffmpeg de análise para identificar arquivos de entrada e de saída, em seguida, usar algo como o pacote
realname
(ou um shell script simples) para converter os nomes primeiro a caminhos absolutos, em seguida, para o controle remoto montado nomes . -
Não use NFS, mas as opções ffmpeg de análise e uso
scp
para copiar os arquivos de entrada mais e os arquivos de saída de volta.