$ 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
...
Agrupar isso em um script para fazer isso em um loop não seria difícil.
Lembre-se de que, se você tentar calcular o número de iterações com base na duração da saída de uma ffprobe
chamada, isso é estimado a partir da taxa de bits média no início do clipe e do tamanho do arquivo do clipe, a menos que você dê o -count_frames
argumento, o que diminui consideravelmente sua operação .
Outra coisa a ter em atenção é que a posição da -ss
opção na linha de comando é importante . Onde eu tenho agora é lento, mas preciso. A primeira versão desta resposta deu a alternativa rápida, mas imprecisa . O artigo vinculado também descreve uma alternativa mais rápida, mas ainda precisa, que 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 colocará cortes bem no meio das frases, até das palavras. Eu acho que você deveria usar 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, você não precisará recodificar para obter segmentos. Apenas passe as compensações naturais do ponto de corte para ffmpeg
, dizendo-lhe para passar o A / V codificado intocado 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 -c copy
argumento diz para copiar todos os fluxos de entrada (áudio, vídeo e potencialmente outros, como legendas) na saída como estão. Para programas simples de A / V, é equivalente aos sinalizadores mais detalhados -c:v copy -c:a copy
ou sinalizadores de estilo antigo -vcodec copy -acodec copy
. Você usaria o estilo mais detalhado quando desejar copiar apenas um dos fluxos, mas recodifique o outro. Por exemplo, há muitos anos, havia uma prática comum com os arquivos do QuickTime para compactar o vídeo com o vídeo H.264, mas deixar o áudio como PCM descompactado ; se você leu hoje um arquivo como esse, pode modernizá-lo -c:v copy -c:a aac
para reprocessar apenas o fluxo de áudio, deixando o vídeo intocado.
O ponto inicial de todos os comandos acima após o primeiro é o ponto inicial do comando anterior mais a duração do comando anterior.