$ 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 ffprobe
połączenia, że jest to szacowane na podstawie średniej przepływności na początku klipu i rozmiaru pliku klipu, chyba że podasz -count_frames
argument, który znacznie spowalnia jego działanie .
Kolejną rzeczą, o której należy pamiętać, jest to, że pozycja -ss
opcji 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 copy
Argumentem 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 copy
lub 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 aac
aby 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.