como diminuir o uso da CPU quando o FFMPEG está fazendo vídeos com várias taxas de bits

0

Estou tentando fornecer um site operando como o Youtube. Para fornecer uma facilidade para os meus usuários fazer upload de seu vídeo no meu servidor com taxa de bits múltipla através do FFMPEG. Mas quando o FFMPEG está fazendo arquivos de vídeo multibraxato a partir do único vídeo, o uso da CPU do servidor é usado ao máximo. Isso significa que mesmo eu uso a cpu mais strong do mercado, apenas algumas pessoas podem fazer o upload de seus vídeos. Então, por favor, me avise como diminuir o uso da CPU quando o FFMPEG estiver fazendo vídeos com várias taxas de bits.

    
por M.Yazdian 30.12.2013 / 08:50

1 resposta

3

A resposta mais simples é, se você estiver usando Linux ou similar, use o comando nice ao iniciar o ffmpeg.

Você usa nice com qualquer comando padrão e ajusta a prioridade da CPU do comando.

Então, se você estiver usando atualmente

ffmpeg -i uploaded.mpg -vcodec copy  out1.mpg

(exceto, obviamente, com argumentos mais interessantes), Você pode apenas fazer

nice ffmpeg -i uploaded.mpg -vcodec copy  out1.mpg

.

Editar: vi que você está usando o Windows Server 2008 .

No Windows, o substituto do comando nice é usar o comando START com opções.

Valeria a pena ler esta página: link

Então você pode usar algo como:

start /wait /low /b  ffmpeg [your arguments here]
  • /wait significa iniciar o comando no final e aguardar a conclusão. Caso contrário, ele iniciará o ffmpeg e retornará imediatamente - possivelmente iniciando outra cópia do ffmpeg para criar uma taxa de bits alternativa, se você tiver criado um loop como esse.

  • /low é o bit que diz executar o processo com baixa prioridade

  • /b significa não abrir uma janela de prompt de comando, que você não precisará em seu servidor.

MAS

Essas provavelmente não são a melhor resposta. A melhor resposta será fazer o processamento de vídeo em outro servidor (ou servidores). Você precisará compartilhar um banco de dados e armazenamento em disco. Quando alguém envia um vídeo, ele precisa ser sinalizado para conversão. Em seguida, seu farm de renderização pode remover as tarefas de renderização uma a uma, salvando em disco e atualizando o banco de dados com as taxas de bits disponíveis.

Separar a renderização dessa maneira tem duas vantagens:

  1. Isso significa que o seu servidor web não está sobrecarregado com o processamento de vídeo e, portanto, permanece responsivo aos usuários
  2. Você pode adicionar mais servidores para fazer a renderização, se quiser (ou usar serviços em nuvem).

Isso vem com um pedaço de trabalho.

    
por 30.12.2013 / 09:24

Tags

Como as extensões do Chrome são instaladas sem o meu conhecimento? shell SSH em um supercomputador multicore ______ qstntxt ___

Eu criei um programa no meu laptop de 2 núcleos e quero verificar como meu programa se comporta quando mais de dois núcleos estão disponíveis para processamento.

Alguém sabe algum serviço gratuito (ou barato) onde eu possa ter por um tempo limitado uma conta de shell SSH para executar o meu programa para alguns testes?

Meu programa é escrito em Java, então eu precisaria também do JRE instalado no servidor, mas nada mais, já que posso testar o processamento na linha de comando depois de scp-ing o arquivo jar no servidor; nem precisa de espaço em disco ou qualquer outra coisa, já que o cálculo é feito na memória.

    
______ azszpr695868 ___

Sistemas com 4, 8 ou até 12 núcleos ou mais não são tão incomuns nos dias de hoje, e normalmente não são chamados de "supercomputadores" - esse apelido é reservado atualmente para sistemas com muitos milhares de núcleos. Se levar apenas uma ou duas horas para executar seu teste, você poderá executá-lo na instância do Amazon EC2 On-demand e apenas pagar conforme o uso; para vê-lo executado em um servidor high-end com muitos recursos (RAM e muitos núcleos de CPU), você poderia ir com um dos servidores mais caros.

Se você quisesse testá-lo em vários núcleos, então, ao preço de $ 2,40 por hora, você poderia iniciar um sistema Linux com acesso root completo, instalar o JRE e executar seu código em um sistema virtual. com 32 "núcleos" - na prática, eles podem acabar sendo 16 núcleos físicos com hyperthreading, ou algo assim, mas o conceito é o mesmo.

É muito mais barato por hora se você tiver um sistema menor com, digamos, 4 núcleos - 30 centavos por hora.

Preços do EC2 . Definitivamente mais barato do que pagar um mês inteiro ou mais por um VPS, se você pode completar seus testes em cerca de 1-8 horas ou mais. Se você precisar testar a longo prazo (meses, com tempo de atividade contínuo 24 horas por dia, 7 dias por semana), um VPS em que você paga uma taxa mensal é mais adequado ou usa uma instância de alta utilização do EC2, pagando antecipadamente e obter um desconto na taxa por hora.

    
___