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

55

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

    
задан Strapakowsky 31.08.2011 в 09:36
источник

3 ответа

80

Это можно сделать, используя mencoder и ffmpeg .

MEncoder

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

mencoder -ss 00:30:00 -endpos 00:00:05 -oac copy -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 на фактические имена файлов, а затем - имя файла, созданного для хранения вырезанной части.

Для справки см. Ссылка и "7. Копирование только части видео" в Ссылка

    
ответ дан N.N. 31.08.2011 в 10:23
источник
15

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

Сводка: 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 cut mp4 video с повторным кодированием

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

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

    
ответ дан Ben Wong 04.01.2016 в 07:33
-1

Чтобы быть более точным, вы можете: ВРУЧНУЮ Откройте файл в медиаплеере, который будет кадр за кадром (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)

Затем вырежьте формат EXACT:

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"

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

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-го уровня, чтобы показать ее, извините

    
ответ дан Budman1 04.09.2014 в 07:55