Quantos tópicos o ffmpeg usa por padrão?

31

Vejo que há uma opção de linha de comando -threads <count> no ffmpeg. Qual é o valor padrão desta opção?

    
por scompt.com 22.06.2010 / 11:22

5 respostas

20

depende do codec usado, da versão ffmpeg e da contagem de núcleos do seu processador. Às vezes é simplesmente um segmento por núcleo. Às vezes é mais complexo como:

With libx264 it is cores x 1.5 for frame threads and cores x 1 for slice threads.

    
por 22.06.2010 / 11:24
16

A partir de 2014, ele usa um número ideal.

Você pode verificar isso em um computador com vários núcleos examinando a carga da CPU (Linux: top , Windows: gerenciador de tarefas) com opções diferentes para o ffmpeg:

  • -threads 0 (ótimo);

  • -threads 1 (single-threaded);

  • -threads 2 (2 segmentos para, por exemplo, um Intel Core 2 Duo);

  • nenhum (o padrão, também ideal).

edição de 2015: em uma CPU de 12 núcleos, alguns comandos ffmpeg têm top do Linux mostrando no máximo 200% de CPU (apenas 2 núcleos), independentemente do número dado a -threads . Portanto, o padrão ainda pode ser ótimo no sentido de "tão bom quanto este binário ffmpeg pode ser obtido", mas não ótimo no sentido de "explorar completamente meu processador leet".

    
por 08.03.2014 / 16:59
4

Em 2015 no Ubuntu 14.04 com o ffmpeg 0.8.10-6, ele usou 1 núcleo em um sistema de 4 núcleos. htop mostrou isso; apenas um núcleo foi usado e obtive uma taxa de conversão de 16 fps para um vídeo FullHD.

Usar -threads 4 fez todos os meus núcleos de CPU chegarem a 100% e eu consegui uma taxa de conversão de 47 fps.

Eu usei o seguinte comando:

$ ffmpeg -i foo.mp4 -y -target pal-dvd -aspect 16:9 dvd-out.mpg
    
por 03.04.2015 / 20:10
1

supondo que você tenha o encadeamento ativado, ele atribuiu 1,5x número de núcleos.

    
por 12.09.2012 / 21:19
1

Jogar com algumas conversões em uma VM do CentOS 6.5 (Ryzen 1700 8c / 16t - vm atribuído a 12 de 16 núcleos) fazendo alguns filmes def padrão (480p) fez o seguinte:

Opção de encadeamento / Taxa de conversão (fps a 60 s) (nenhum / padrão) / 130fps -threads 1 / 70fps -threads 2 / 120fps -threads 4 / 185fps -threads 6 / 228fps -threads 8 / 204fps -threads 10 / 181fps

A parte interessante foi o carregamento da cpu (usando o htop para assisti-lo). O uso da opção no -threads acabou na faixa de 130fps com a carga espalhada por todos os núcleos em um nível de carga baixa. Usando 1 thread fez exatamente isso, carregado um núcleo em 100%. Usar qualquer outra coisa resultou em outra situação de propagação.

Como você pode ver, há também um ponto de retorno decrescente, então você teria que ajustar a opção -threads para sua máquina em particular. Para minha configuração especificamente, usando o -threads 6 (em uma máquina de 12 núcleos) resultou no melhor FPS ao converter o vídeo (de h264 para x264 em uma taxa de bits diferente para forçar uma conversão) e retorna realmente diminuiu mais threads eu joguei em isto.

Também poderia ter sido um problema de memória - só tinha 1 GB atribuído à VM. Eu posso ajustar isso e ver se isso muda alguma coisa. Ainda assim - isso mostra que o uso da opção -threads pode aumentar o desempenho; portanto, execute alguns testes em sua máquina em diferentes níveis para encontrar o ponto ideal de sua configuração.

    
por 06.04.2017 / 18:04

Tags