Atualmente, estou usando um pequeno programa de software que criei em Python que utiliza ffmpeg em meu laptop pessoal que é superqualificado para executá-lo (core i7, 16 gb de ram etc.), mas gostaria de movê-lo para um computador mais antigo totalmente redefinido exceto para o sistema operacional.
Aqui estão as especificações do laptop mais antigo:
HD de 250 GB
Windows Vista Home Premium
2gb RAM
Processador Intel Centrino 2
Acho que minha pergunta principal é: o ffmpeg oferece suporte a sistemas operacionais mais antigos (como o Windows Vista) e (pelos padrões de hoje) hardware relativamente barato? Não consigo encontrar nenhuma página de requisitos do sistema em ffmpeg.org ou em qualquer outro lugar.
Os vídeos que o programa processa são de resolução relativamente baixa com taxas de bits baixas e não mais que 2 minutos e 30 segundos.
Na realidade, não há requisitos para a execução do FFMPEG. Ele será executado em praticamente qualquer sistema operacional e hardware.
A verdadeira questão é: ele funcionará bem para as funções que você está tentando executar? Embora o computador especificado seja antigo, é mais do que provável que o FFMPEG funcione bem para vídeos de baixa qualidade.
O FFmpeg (e codecs como x264) irá compilar e rodar em quase qualquer coisa (é escrito em C razoavelmente portátil), é apenas uma questão de quão rápido será.
Se você está apenas decodificando e executando um filtro ou algo assim, você pode ficar bem, especialmente se a reprodução em tempo real de vídeo de alta resolução não for necessária.
Se você só precisa de áudio, isso não é muito computacionalmente intensivo em comparação com o vídeo e deve ser bom para a maioria das coisas.
Desempenho de codificação/decodificação de vídeo em CPUs antigas:
A qualidade do vídeo (taxa de bits) não é o ponto principal, é a resolução (quanta RAM um quadro descompactado ocupa). Além disso, ter 2x mais pixels para processar simplesmente leva mais tempo de CPU para decodificar mais macroblocos. Você pode achar que 720p é muito mais rápido que 1080p.
Se você realmente não tiver RAM suficiente para manter algumas dezenas ou centenas de quadros na memória, a velocidade de decodificação / codificação cairá de um penhasco quando você atingir o espaço de troca. Especialmente codificando onde você deseja que o codificador tenha alguma previsão para boas decisões sobre onde gastar bits.
Outro limite mais suave é o tamanho do cache L3, especialmente devido à largura de banda de memória relativamente menor das CPUs antigas.
O Centrino é como a era do Pentium-M. Isso é anterior ao SSSE3, portanto, você não tem um embaralhamento de bytes SIMD (
pshufb
) e as unidades de execução SIMD têm apenas 64 bits de largura. (As instruções comopsadbw xmm0, xmm1
calcular a soma das diferenças absolutas para 2 conjuntos de 8 bytes em paralelo serão decodificadas como 2 uops separados.)Portanto, as velocidades de decodificação/codificação h.264 serão significativamente piores, relógio a relógio, do que em uma CPU Nehalem ou Sandybridge de alguns anos depois. E relógio muito pior para relógio do que em um núcleo moderno como Haswell ou Skylake com AVX2 e cargas vetoriais desalinhadas muito eficientes, ou Zen / Zen 2.
Seu Centrino 2 provavelmente também é apenas de núcleo único, e a velocidade de codificação escala quase linearmente com a contagem de núcleos, pelo menos nos primeiros núcleos. Se você está acostumado com um sistema quad-core, esse é outro fator de 4 mais lento, além da grande queda de desempenho por núcleo.
E a codificação h.265 será quase uma causa perdida. por exemplo, eu joguei um pouco com x265 no meu antigo sistema Core 2 (E6600 2.4GHz dual-core Conroe com DDR2-566) antes de obter um Skylake quad-core (i7-6700k com DDR4-2666). x265 -preset mais lento foi cerca de 40x mais rápido no Skylake, IIRC, para codificação 1920x1080 em como crf 25.
Mas o x265 não tem um suporte tão bom para CPUs antigas; começou o desenvolvimento depois que o Core 2 ficou obsoleto, ao contrário do x264. Para x264, o Core 2 já foi o topo de linha, então o x264 tem boas otimizações para CPUs antigas. Deveria ter um asm escrito à mão ajustado para CPUs da safra Centrino 2, mas não há muito que a CPU possa fazer. Portanto, "o melhor que pode fazer" ainda não é ótimo.
Sim, como diz @Keltari
ffmpeg
, não possui requisitos mínimos. Ele será executado em qualquer hardware no sistema operacional compatível.Mas como a edição de vídeo é uma tarefa intensiva, as especificações do seu laptop ficarão bastante atrasadas em vídeos de alta qualidade. Você precisa de mais CPU para uma velocidade mais rápida. Ele usa o número ideal de threads por padrão. Se você tiver mais núcleos, a velocidade e a codificação serão mais rápidas. A RAM geralmente afeta os filtros, a taxa de bits e outras opções de codificação. A GPU também afeta, se você estiver usando NVidia, ela suporta até 2 codificações paralelas. Melhor pegar uma GPU Intel.
E para o sistema operacional Windows, o suporte ao Windows XP foi encerrado. Vista ainda é suportado.
É verdade que qualquer coisa rodará FFMPEG muito bem.
Mas o que eu acho que a maioria das pessoas está perdendo aqui é que o hardware mais antigo simplesmente tem uma eficiência elétrica pior: é preciso mais energia para executar os mesmos cálculos.
É do seu interesse ainda usar seu computador mais recente para a renderização de vídeo simples, pois você consumirá menos watts de energia para o mesmo trabalho.
Esta pode ser uma pergunta antiga, mas executei alguns benchmarks em provedores de nuvem que podem fornecer uma indicação de como
FFmpeg
é executado em hardware diferente.Benchmarking de provedores de nuvem com FFmpeg
Esse benchmark foi feito com o mesmo arquivo e o mesmo comando em vários provedores de nuvem para testar seu desempenho.
Tamanho do arquivo de entrada
: 719.966.208 bytes
Formato: AVI
Duração: 104 minutos
Qualidade: 480p
Você pode baixar o arquivo de entrada aqui, para reproduzir os testes. https://mega.nz/file/Epd0yJyK#LDg8qLTebY0x2PEAUdfzigYm3NSviWi3asQ849q5Uv0
Comando FFmpeg
A predefinição lenta foi usada para manter a qualidade o máximo possível.
Resultados
1. AMD EPYC 7281
2. AMD EPYC 7401P
3. 1 vCPU não se traduz em 1 núcleo, mas se traduz em 0,25% de um núcleo de CPU. Isso explica seu desempenho. 2 vCPU se traduz em 50%. Isso se aplica apenas às instâncias e2-micro e e2-small
4. Frequência de núcleo alta 3,4 GHz
5. Frequência de núcleo baixa 2,4 GHz