$ ffmpeg -i source-file.foo -ss 0 -t 600 first-10-min.m4v
$ ffmpeg -i source-file.foo -ss 600 -t 600 second-10-min.m4v
$ ffmpeg -i source-file.foo -ss 1200 -t 600 third-10-min.m4v
...
Resolver isso em um script para fazer isso em um loop não seria difícil.
Tenha em atenção que, se tentar calcular o número de iterações com base na duração da saída de uma chamada ffprobe
, isto é estimado a partir da taxa média de bits no início do clipe e tamanho do arquivo, a menos que você forneça o argumento -count_frames
, o que atrasa consideravelmente sua operação.
Outra coisa que deve estar ciente é que a posição da opção -ss
na linha de comando é importante . Onde eu tenho agora é lento, mas preciso. A primeira versão dessa resposta deu a alternativa rápida, mas imprecisa . O artigo vinculado também descreve uma alternativa mais rápida, mas ainda precisa, pela qual você paga com um pouco de complexidade.
Tudo isso de lado, eu não acho que você realmente queira cortar exatamente 10 minutos para cada clipe. Isso vai colocar cortes bem no meio de frases, até mesmo palavras. Acho que você deveria estar usando um editor de vídeo ou player para encontrar pontos de corte naturais com apenas 10 minutos de intervalo.
Supondo que seu arquivo esteja em um formato que o YouTube possa aceitar diretamente, não é necessário reencodificá-lo para obter segmentos. Basta passar as compensações do ponto de corte natural para ffmpeg
, informando para passar o A / V codificado por inalterado usando o codec "copy":
$ ffmpeg -i source.m4v -ss 0 -t 593.3 -c copy part1.m4v
$ ffmpeg -i source.m4v -ss 593.3 -t 551.64 -c copy part2.m4v
$ ffmpeg -i source.m4v -ss 1144.94 -t 581.25 -c copy part3.m4v
...
O argumento -c copy
diz para copiar todos os fluxos de entrada (áudio, vídeo e potencialmente outros, como legendas) para a saída como está. Para programas A / V simples, é equivalente aos sinalizadores mais detalhados -c:v copy -c:a copy
ou aos sinalizadores de estilo antigo -vcodec copy -acodec copy
. Você usaria o estilo mais detalhado quando quiser copiar apenas um dos fluxos, mas recodificar o outro. Por exemplo, muitos anos atrás, havia uma prática comum com arquivos QuickTime para compactar o vídeo com vídeo H.264, mas deixar o áudio como PCM não comprimido ; se você encontrasse esse arquivo hoje, poderia modernizá-lo com -c:v copy -c:a aac
para reprocessar apenas o fluxo de áudio, deixando o vídeo intacto.
O ponto inicial para cada comando acima após o primeiro é o ponto inicial do comando anterior mais a duração do comando anterior.