Wyodrębnij część wideo za pomocą polecenia w jednym wierszu

81

Jeśli mam film, zwykle avi, ale może być dowolny, i chcę, aby utworzyć inny w tym samym formacie, ale tylko część, pozycję I sekund do f sekundy filmu, jaka jest komenda jedna linia zrobić to?

Strapakowsky
źródło

Odpowiedzi:

114

Można to zrobić za pomocą mencoderi ffmpeg.

mencoder

Powiedz, że chcesz wyciąć część zaczynającą się od 00:00:30 do oryginalnego pliku o długości 5 sekund i że nie powinna być ponownie kodowana (jeśli chcesz ją ponownie zakodować, musisz zastąpić copyją dźwiękiem i kodeki wideo, w przypadku listy dostępnych problemów z kodekami audio mencoder -oac help, w celu uzyskania listy dostępnych problemów z kodekami wideo mencoder -ovc help), następnie wydajesz:

mencoder -ss 00:30:00 -endpos 00:00:05 -oac copy -ovc copy originalfile -o newfile

Będziesz musiał zastąpić orginalfilei newfilerzeczywistymi nazwami plików, później jest to nazwa pliku, który jest tworzony w celu przechowywania wyciętej części.

ffmpeg

Powiedz, że chcesz wyciąć część zaczynającą się od 00:00:30 do oryginalnego pliku o długości 5 sekund i że nie powinna być ponownie kodowana (jeśli chcesz ją ponownie zakodować, musisz ją wymienić copyz kodekami audio i wideo, aby wyświetlić listę dostępnych problemów z kodekami ffmpeg -formats -E), następnie wydajesz:

ffmpeg -ss 00:00:30 -i orginalfile -t 00:00:05 -vcodec copy -acodec copy newfile

Będziesz musiał zastąpić orginalfilei newfilerzeczywistymi nazwami plików, później jest to nazwa pliku, który jest tworzony w celu przechowywania wyciętej części.


W celach informacyjnych patrz http://lazyxiong-tech.blogspot.com/2007/05/using-mencoder-to-cut-out-pieces-of.html i „7. Kopiuj tylko część filmu” w http: // segfault.in/2010/10/ffmpeg-tricks-you-should-know-about/

NN
źródło
Próbowałem i nie udało mi się. Czy możesz mi pokazać, jakie polecenie byłoby dla Ciebie typowe dla kodeków używanych w formatach avi, flv i mpg? Wymieniłem kodeki, ale nie miałem większego sensu.
Strapakowsky
@strapakowsky Zależy to od pliku wejściowego i zainstalowanych kodeków. Może powinieneś zadać nowe pytanie i dodać informacje o tym, jaki plik masz i jakie polecenie wypróbowałeś.
NN
@strapakowsky Nie mogę zmusić go do pracy z ffmpeg, ale wszystkie przewodniki na temat wycinania części za pomocą ffmpeg sugerują, że powinien on jakoś działać, więc zachowuję go w swojej odpowiedzi. Dodałem jednak również linię mencodera, którą zabieram do pracy.
NN
Właśnie użyłem wersji tego. To nie działa na ciebie, bo -ss ... -t ...musi być wcześniej w -i infileopcji. Zobacz tę odpowiedź dla prawdziwego jednowarstwowego. Prawie to masz, tylko nie zamówienie ...
Hendy,
1
@Hendy Edited odpowiednio
NN
25

Czy musisz wycinać wideo z ponownym kodowaniem lub bez trybu ponownego kodowania? Możesz spróbować wykonać poniższe polecenie.

Streszczenie: ffmpeg -i [plik_wejściowy] -ss [sekundy_początkowe] -t [sekundy_czasu] [plik_wyjściowy]

użyj przyciętego filmu MP4 FFmpeg bez ponownego kodowania

Example:
ffmpeg -i source.mp4 -ss 00:00:05 -t 00:00:10 -c copy cut_video.mp4

użyj przyciętego filmu MP4 FFmpeg z ponownym kodowaniem

Example:
ffmpeg -i source.mp4 -ss 00:00:05 -t 00:00:10 -async 1 -strict -2 cut_video.mp4

Jeśli chcesz odciąć sekcję od początku, po prostu upuść -t 00:00:10z polecenia

Ben Wong
źródło
0

medipack jest bardzo prostą aplikacją wiersza poleceń jako opakowanie ffmpeg.

przycinanie wideo można osiągnąć za pomocą następujących poleceń:

medipack trim input.mp4 -s 01:04 -e 14:08 -o output.mp4
medipack trim input.mp4 -s 01:04 -t 13:04 -o output.mp4

możesz wyświetlić opcje komendy przycinania jako:

srb@srb-pc:$ medipack trim -h
usage: medipack trim [-h] [-s START] [-e END | -t TIME] [-o OUTPUT] [inp]

positional arguments:
  inp                   input video file ex: input.mp4

optional arguments:
  -h, --help            show this help message and exit
  -s START, --start START
                        start time for cuting in format hh:mm:ss or mm:ss
  -e END, --end END     end time for cuting in format hh:mm:ss or mm:ss
  -t TIME, --time TIME  clip duration in format hh:mm:ss or mm:ss
  -o OUTPUT, --output OUTPUT

możesz również zbadać inne opcje za pomocą medipack -h

srb@srb-pc:$ medipack --help
usage: medipack.py [-h] [-v] {trim,crop,resize,extract} ...

positional arguments:
  {trim,crop,resize,extract}

optional arguments:
  -h, --help            show this help message and exit
  -v, --version         Display version number

możesz odwiedzić https://github.com/srbcheema1/medipack i przykłady transakcji w README.

srbcheema1
źródło
-1

Aby być bardziej precyzyjnym, możesz: RĘCZNIE otworzyć plik w odtwarzaczu multimedialnym, który będzie klatka po klatce (mój ulubiony odtwarzacz potplayer działa, ale MPC-HC działa) i odtworzy plik AVISynth z danymi takimi jak:

DirectShowSource(("C:\Downloads\Video\Do you want him.flv"), Pixel_Type="yuy2").Crop(0,0,-0,-0)
Subtitle("C:\Downloads\Video\Do you want him.flv", font="Arial", size=24, text_color=$ff0000, align=3)
ShowFrameNumber(scroll=true, x=336, y=27, font="Arial", size=24, text_color=$ff0000)

ShowTime(x=398, y=44, font="Arial", size=24, text_color=$ff0000)

Następnie wycinaj w formacie EXACT time:

ffmpeg -i "Path\do you want him.flv" -ss 00:00:05.240 -to 00:00:08.360 -vcodec libx264 -acodec libvo_aacenc "Path\Do you want him1.flv"

i

ffmpeg -i "Path\do you want him.flv" -ss 00:00:10.240 -to 00:00:14.360 -vcodec libx264 -acodec libvo_aacenc "Path\Do you want him2.flv"

Jeśli chcesz dołączyć, utwórz plik txt z plikami wideo o treści takiej jak:

file 'C:\Downloads\Video\Do you want him1.flv'

file 'C:\Downloads\Video\Do you want him2.flv'

Uruchom ffmpeg:

ffmpeg -f concat -i FileList.txt -c copy "Path\NewName_joined.flv"

PROGRAMOWO napisałem program, ale nie mam poziomu 10, aby go pokazać, przepraszam

Budman 1
źródło