Eu nunca consigo fazer a solução do ptQa funcionar, principalmente porque eu nunca consigo descobrir o que os erros dos filtros significam ou como corrigi-los. Minha solução parece um pouco desajeitada porque pode deixar uma bagunça, mas se você a estiver jogando em um script, a limpeza pode ser automatizada. Também gosto dessa abordagem porque, se algo der errado na etapa 4, você concluirá as etapas de 1 a 3, para que a recuperação de erros seja um pouco mais eficiente.
A estratégia básica é usar -t
e -ss
para obter vídeos de cada segmento desejado e juntar todas as partes para sua versão final.
Digamos que você tenha 6 segmentos ABCDEF a cada 5 segundos e você quer A (0-5 segundos), C (10-15 segundos) e E (20-25 segundos) você faria isso:
ffmpeg -i abcdef.tvshow -t 5 a.tvshow -ss 10 -t 5 c.tvshow -ss 20 -t 5 e.tvshow
ou
ffmpeg -i abcdef.tvshow -t 0:00:05 a.tvshow -ss 0:00:10 -t 0:00:05 c.tvshow -ss 0:00:20 -t 0:00:05 e.tvshow
Isso fará com que os arquivos a.tvshow, c.tvshow e e.tvshow. O -t
indica quanto tempo cada clipe é, portanto, se c tiver 30 segundos, você pode passar 30 ou 0:00:30. A opção -ss
diz até onde ir para o vídeo de origem, portanto, é sempre relativa ao início do arquivo.
Então, quando você tiver vários arquivos de vídeo, eu faço um arquivo ace-files.txt
assim:
file 'a.tvshow'
file 'c.tvshow'
file 'e.tvshow'
Observe o "arquivo" no início e o nome do arquivo com escape depois disso.
Em seguida, o comando:
ffmpeg -f concat -i ace-files.txt -c copy ace.tvshow
Que concata todos os arquivos em abe-files.txt
juntos, copiando seus codecs de áudio e vídeo e cria um arquivo ace.tvshow
, que deve ser apenas as seções a, ce e. Em seguida, lembre-se de excluir ace-files.txt
, a.tvshow
, c.tvshow
e e.tvshow
.
Disclaimer : Eu não tenho idéia de como (in) eficiente isso é comparado com as outras abordagens em termos de ffmpeg
, mas para os meus propósitos, funciona melhor. Espero que ajude alguém.