Извлеките часть видео с помощью однострочной команды

Если у меня есть видео, обычно avi, но может быть любым, и я хочу создать еще одно в том же формате, но только часть, позиция i секунд до f через несколько секунд после начала видео, какова однострочная команда для этого?

Это можно сделать с помощью mencoder или ffmpeg.

менкодер

Скажите, что вы хотите вырезать часть, начинающуюся с 00:00:30, в исходный файл длиной 5 секунд и что ее не следует перекодировать (если вы хотите перекодировать ее, вам придется заменить copy с аудио- и видеокодеками, для получения списка доступных аудиокодеков. mencoder -oac help, для получения списка доступных видеокодеков . mencoder -ovc help), затем вы выдаете:

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

Вам придется заменить orginalfile и newfile что касается реальных имен файлов, то последнее - это имя файла, созданного для хранения вырезанной детали.

ffmpeg

Скажите, что вы хотите вырезать часть, начинающуюся с 00:00:30, в исходный файл длиной 5 секунд и что ее не следует перекодировать (если вы хотите перекодировать ее, вам придется заменить copy с аудио- и видеокодеками, для получения списка доступных кодеков. ffmpeg -formats -E), затем вы выдаете:

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

Вам придется заменить orginalfile и newfile что касается реальных имен файлов, то последнее - это имя файла, созданного для хранения вырезанной детали.


Для справки см. http://lazyxiong-tech.blogspot.com/2007/05/using-mencoder-to-cut-out-pieces-of.html и "7. Скопируйте Только Часть Видео"в http://segfault.in/2010/10/ffmpeg-tricks-you-should-know-about/

Вам нужно вырезать видео в режиме перекодирования или без перекодирования?Вы можете попробовать выполнить приведенную ниже команду.

Краткое описание:ffmpeg -i [input_file] -ss [start_seconds] -t [duration_seconds] [output_file]

используйте FFmpeg для вырезания видео mp4 без перекодирования

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

используйте FFmpeg для вырезания видео mp4 с повторным кодированием

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

Если вы хотите отрезать раздел с самого начала, просто отбросьте -t 00:00:10 из команды

медицинский пакет это очень простое приложение командной строки в качестве оболочки поверх ffmpeg.

вы можете добиться обрезки вашего видео с помощью следующих команд:

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

вы можете просмотреть параметры подкоманды trim следующим образом:

srb@srb-pc:$ medipack trim -husage: medipack trim [-h] [-s START] [-e END | -t TIME] [-o OUTPUT] [inp]positional arguments:  inp                   input video file ex: input.mp4optional 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

вы также можете изучить другие варианты, используя medipack -h

srb@srb-pc:$ medipack --helpusage: 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

вы можете посетить https://github.com/srbcheema1/medipack и примеры оформления заказа в README.

Чтобы быть более точным, вы можете: вручную открыть файл в медиаплеере, который будет продвигаться покадрово (potplayer мой любимый, но MPC-HC работает) и воспроизвести файл AviSynth с такими данными, как:

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)

Затем вырезать в ТОЧНОМ формате времени:

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"

и

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"

Если вы хотите присоединиться, создайте текстовый файл с видеофайлами с таким содержимым, как:

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

Бежать ffmpeg:

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

ПРОГРАММНО Я написал программу, но у меня нет 10-го уровня, чтобы показать ее, извините