2012-01-11 17:59:52 +0000 2012-01-11 17:59:52 +0000
151
151

Wyciąć część z pliku wideo z pozycji startowej do pozycji końcowej za pomocą FFmpeg

Mam plik wideo o długości 30 minut, ale chcę wyekstrahować wideo z 00:09:23 do 00:25:33.

Mogę zdefiniować pozycję startową za pomocą -ss, ale nie udało mi się go znaleźć dla pozycji końcowej. Jakąś pomoc proszę?

Odpowiedzi (6)

255
255
255
2012-01-11 21:02:37 +0000

Install ffmpeg

Make sure you download a recent version of ffmpeg , and don’t use the one that comes with your distribution (e.g. Ubuntu). Zapakowane wersje z różnych dystrybucji są często nieaktualne i nie zachowują się zgodnie z oczekiwaniami.

Or compile it yourself .

How to cut a video, without re-encoding

Use this to cut video from [start] for [duration]:

ffmpeg -ss [start] -i in.mp4 -t [duration] -c copy out.mp4

Here, the options mean the following:

  • -ss specifies the start time, e. g. 00:01:23.000 lub 83 (w sekundach)
  • -t określa czas trwania klipu (ten sam format).
  • Ostatni ffmpeg posiada również flagę podającą czas zakończenia z -to .
  • -c copy kopiuje pierwszy bitstream video, audio i napisów z wejścia do pliku wyjściowego bez ich ponownego kodowania. Nie zaszkodzi to jakości i sprawi, że komenda uruchomi się w ciągu kilku sekund.

Jak wyciąć wideo, z ponownym kodowaniem

Jeśli pominiesz opcję -c copy, ffmpeg automatycznie ponownie zakoduje wyjście wideo i audio zgodnie z wybranym formatem. Dla wysokiej jakości obrazu i dźwięku, przeczytaj odpowiednio x264 Encoding Guide i AAC Encoding Guide .

Na przykład:

ffmpeg -ss [start] -i in.mp4 -t [duration] -c:v libx264 -c:a aac -strict experimental -b:a 128k out.mp4
31
31
31
2015-05-07 02:30:48 +0000

Myślę, że teraz możesz użyć następującej komendy.

ffmpeg -i inputFile -vcodec copy -acodec copy -ss 00:09:23 -to 00:25:33 outputFile

Have a look also ffmpeg Doc , or this wiki page .

15
15
15
2015-04-07 15:10:38 +0000

To dziwne, że nikt nie zaproponował trim filtr .

Rzuć wszystko z wyjątkiem drugiej minuty wejścia:

ffmpeg -i INPUT -vf trim=60:120

Trzymaj tylko pierwszą sekundę:

ffmpeg -i INPUT -vf trim=duration=1

Rzuć wszystko z wyjątkiem drugiej 13 do drugiej 58:

ffmpeg -i INPUT -vf trim=13:58 OUTPUT
6
6
6
2013-10-03 19:08:40 +0000

Możesz użyć tych dwóch metod, które działają dla Windowsa i Linuksa.

Istnieją dwa sposoby dzielenia plików wideo przez ffmpeg. Pierwszy z nich jest dobry sam w sobie, więcej - jest szybszy, ale czasami tworzy pliki wyjściowe z pewnymi wadami. Tak więc w tych przypadkach jest drugi sposób dzielenia plików wideo: jest znacznie wolniejszy, pliki wyjściowe są większe, ale wydaje się, że są zawsze tej samej jakości, co używane pliki wejściowe.

Droga 1:

ffmpeg -ss <start> -i in1.avi -t <duration> -c copy out1.avi

Droga 2:

ffmpeg -ss <start> -i in1.avi -t <duration> out1.avi
  • <start> - początkiem części wideo ffmpeg jest wycięcie. Format: 00:00:00.0000, czyli godziny:minuty:sekundy:milisekundy.

  • <duration> - czas trwania części wideo ffmpeg ma zostać wycięty. Taki sam format jak powyżej.

Przykłady:

ffmpeg -ss 01:19:00 -i in1.avi -t 00:05:00 -c copy out1.avi
ffmpeg -ss 01:19:00 -i in1.avi -t 00:05:00 out1.avi

ffmpeg wycina część pliku wideo od 1 godziny 19 minut 0 sekund. Czas trwania wyciętej sekwencji wideo wynosi 5 minut 0 sekund.

-1
-1
-1
2012-01-11 18:29:57 +0000

Możesz użyć tego

ffmpeg -sameq -ss clip_start -t duration -i original.ogg clip.ogg

Tutaj musisz podać czas trwania filmu. ie. 00:25:33-00:09:23

-2
-2
-2
2012-01-11 18:27:11 +0000

Używam następującej składni do cięcia wideo z ffmpef:

ffmpeg -sameq -ss [start_seconds] -t [duration_seconds] -i [input_file] [outputfile]

-t jest używany do ustawienia czasu trwania w sekundach - nie można określić czasu końcowego, ale to powinno zadziałać dla Ciebie.