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 .

Exemplo:

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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top