$ 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
...
Zawinięcie tego w skrypt, aby zrobić to w pętli, nie byłoby trudne.
Uwaga: jeśli spróbujesz obliczyć liczbę iteracji na podstawie czasu trwania ffprobepołączenia, że jest to szacowane na podstawie średniej przepływności na początku klipu i rozmiaru pliku klipu, chyba że podasz -count_framesargument, który znacznie spowalnia jego działanie .
Kolejną rzeczą, o której należy pamiętać, jest to, że pozycja -ssopcji w wierszu poleceń ma znaczenie . To, co mam teraz, jest powolne, ale dokładne. Pierwsza wersja tej odpowiedzi dała szybką, ale niedokładną alternatywę. W linkowanym artykule opisano również najczęściej szybką, ale wciąż dokładną alternatywę, za którą płacisz z odrobiną złożoności.
Poza tym, nie sądzę, że naprawdę chcesz wycinać dokładnie 10 minut dla każdego klipu. To spowoduje umieszczenie cięć w środku zdań, a nawet słów. Myślę, że powinieneś używać edytora wideo lub odtwarzacza, aby znaleźć naturalne punkty odcięcia w odstępie 10 minut.
Zakładając, że Twój plik ma format, który YouTube może bezpośrednio zaakceptować, nie musisz ponownie kodować, aby uzyskać segmenty. Po prostu przekaż naturalne przesunięcia punktu odcięcia do ffmpeg, mówiąc mu, aby przekazało zakodowane A / V przez nietknięte za pomocą kodeka „kopiuj”:
$ 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
...
-c copyArgumentem informuje go skopiować wszystkie strumienie wejściowe (audio, wideo i potencjalnie innych, takich jak napisami) do wyjścia jak jest. W przypadku prostych programów A / V jest to odpowiednik bardziej szczegółowych flag -c:v copy -c:a copylub flag w starym stylu -vcodec copy -acodec copy. Możesz użyć bardziej pełnego stylu, jeśli chcesz skopiować tylko jeden ze strumieni, ale ponownie zakodować drugi. Na przykład wiele lat temu powszechna była praktyka z plikami QuickTime do kompresji wideo za pomocą wideo H.264, ale pozostawienie dźwięku jako nieskompresowanego PCM ; jeśli dzisiaj natknąłeś się na taki plik, możesz go zmodernizować, -c:v copy -c:a aacaby ponownie przetworzyć tylko strumień audio, pozostawiając nienaruszony film.
Punktem początkowym każdego polecenia powyżej po pierwszym jest punkt początkowy poprzedniego polecenia plus czas trwania poprzedniego polecenia.