$ 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
...
Avvolgere questo in uno script per farlo in un ciclo non sarebbe difficile.
Fai attenzione che se provi a calcolare il numero di iterazioni in base alla durata dell'output di una ffprobe
chiamata, questo è stimato dalla velocità in bit media all'inizio della clip e dalle dimensioni del file della clip a meno che tu non dia l' -count_frames
argomento, il che rallenta notevolmente il suo funzionamento .
Un'altra cosa da tenere presente è che la posizione -ss
dell'opzione sulla riga di comando è importante . Dove l'ho ora è lento ma preciso. La prima versione di questa risposta ha dato l' alternativa veloce ma imprecisa . L'articolo collegato descrive anche un'alternativa per lo più veloce ma ancora accurata, che si paga con un po 'di complessità.
A parte questo, non penso che tu voglia davvero tagliare esattamente 10 minuti per ogni clip. Ciò metterà tagli proprio nel mezzo di frasi, anche di parole. Penso che dovresti usare un editor video o un lettore per trovare punti di taglio naturali a meno di 10 minuti di distanza.
Supponendo che il tuo file sia in un formato che YouTube può accettare direttamente, non è necessario ricodificare per ottenere segmenti. Basta passare gli offset del punto di taglio naturale a ffmpeg
, dicendogli di far passare l'A / V codificato non toccato utilizzando il codec "copia":
$ 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
...
L' -c copy
argomento gli dice di copiare tutti i flussi di input (audio, video e potenzialmente altri, come i sottotitoli) nell'output così com'è. Per semplici programmi A / V, è equivalente ai flag più dettagliati -c:v copy -c:a copy
o ai flag di vecchio stile -vcodec copy -acodec copy
. Utilizzeresti lo stile più dettagliato quando desideri copiare solo uno dei flussi, ma ricodificando l'altro. Ad esempio, molti anni fa c'era una pratica comune con i file QuickTime per comprimere il video con il video H.264 ma lasciare l'audio come PCM non compresso ; se hai incontrato un file del genere oggi, potresti modernizzarlo -c:v copy -c:a aac
per rielaborare solo il flusso audio, lasciando intatto il video.
Il punto iniziale per ogni comando sopra dopo il primo è il punto iniziale del comando precedente più la durata del comando precedente.