Если у меня есть видео, обычно avi, но может быть и любым другим, и я хочу создать еще одно в том же формате, но только часть, позицияясекунд дофчерез несколько секунд после начала видео, какая однострочная команда это делает?
решение1
Это можно сделать с помощью 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/
решение2
Вам нужно вырезать видео с перекодированием или без режима перекодирования? Вы можете попробовать выполнить следующую команду.
Синопсис: ffmpeg -i [входной_файл] -ss [начальные_секунды] -t [длительность_секунд] [выходной_файл]
использовать 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
команду
решение3
медикаментозный пакеточень простое приложение командной строки, являющееся оболочкой для ffmpeg
.
Вы можете обрезать видео, используя следующие команды:
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
Вы можете просмотреть параметры подкоманды trim как:
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
Вы также можете изучить другие варианты, используя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
Вы можете посетитьhttps://github.com/srbcheema1/medipackи примеры оформления заказа в README.
решение4
Если говорить точнее, вы можете: ВРУЧНУЮ открыть файл в медиаплеере, который будет воспроизводить кадр за кадром (мой любимый 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, чтобы показать ее, извините