Grandes melhorias de desempenho na concatenação de áudio e vídeo
Atualizamos recentemente nossos Robots de concatenação de áudio e vídeo para usar o demultiplexador concat do FFmpeg, proporcionando uma melhoria significativa no desempenho das Assemblies às quais ele se aplica.
Para que as Assemblies aproveitem o novo demultiplexador, os arquivos de entrada precisam atender às seguintes condições:
- Usar o mesmo formato de contêiner (por exemplo, todos em MP4).
- Usar os mesmos codecs para seus fluxos (por exemplo, H.264 para vídeo e AAC para áudio).
- Ter os mesmos parâmetros de codec (como resolução e taxa de quadros para vídeo ou taxa de amostragem para áudio).

Por que é muito mais rápido
Concatenar com o demultiplexador concat é muito mais rápido do que usar filtros complexos e fazer uma nova transcodificação por vários motivos:
Não é necessário recodificar
Ao usar o demultiplexador concat com -c copy, o FFmpeg não precisa decodificar e depois recodificar
os fluxos. A recodificação é um processo que exige muito da CPU e pode aumentar significativamente o
tempo de execução de uma Assembly, especialmente no caso de Assemblies que processam vídeos de alta resolução.
Ao evitar essa etapa, o demultiplexador concat evita recodificar os arquivos desnecessariamente,
concluindo a Assembly muito mais rápido.
Cópia direta dos dados
O demultiplexador concat basicamente permite que o FFmpeg copie os dados de mídia diretamente dos arquivos de origem para o arquivo de saída. Como há pouco processamento envolvido (além de analisar os cabeçalhos dos arquivos e ajustar as marcas de tempo), a operação é limitada principalmente pela velocidade da mídia de armazenamento.
Preserva a qualidade
Como não há recodificação, também não há perda de qualidade causada por artefatos de compressão que poderiam ser introduzidos durante o processo de codificação. Esse é um benefício adicional, além da melhoria de velocidade.
Em contrapartida, usar filtros complexos ou recodificar exige que o FFmpeg decodifique completamente todos os fluxos, processe-os (o que pode incluir redimensionamento, filtragem ou outras transformações) e depois os recodifique no formato de destino. Isso não só leva mais tempo, como também pode reduzir a qualidade e aumentar o tamanho do arquivo.
Essa abordagem é semelhante à do LosslessCut, um editor de vídeo de código aberto criado por nosso próprio Transloadian Mikael Finstad. O LosslessCut também usa o demultiplexador concat do FFmpeg para edição de vídeo rápida e sem perdas.
Para aproveitar ao máximo essa mudança, primeiro transcodifique os arquivos de entrada que diferem
entre si para que tenham o mesmo formato de contêiner, os mesmos codecs de fluxo e os mesmos parâmetros
de codec, incluindo resolução e taxa de quadros do vídeo e taxa de amostragem do áudio. Para obter o
melhor desempenho nessa etapa, use turbo: true e uma de nossas
predefinições. Com ambos, você pode reduzir bastante o tempo
de execução das suas Assemblies existentes.
Se os arquivos de entrada já atenderem a todas as condições acima de correspondência de contêiner, codecs de fluxo e parâmetros de codec, não será necessário adicionar Steps de codificação, pois você já deve estar percebendo as melhorias de desempenho por padrão. No entanto, se os seus arquivos puderem ter contêineres, codecs de fluxo ou parâmetros de codec diferentes (incluindo resolução, taxa de quadros ou taxa de amostragem), recomendamos adicionar, com o Robot /file/filter, um Step para encaminhar os arquivos fora do padrão a um Step de codificação, para que você possa aproveitar ao máximo os seus Steps de concatenação posteriores.
