Точное вырезание видео в определенное время без потери качества

Я использую ffmpeg для точного вырезания видео в определенное время в другое время. Я знаю, мы можем просто перекодировать его, но потеряем качество. Кроме того, я не хочу использовать опцию копирования из-за проблем с ключевыми кадрами (т. Е. Видео не будет точно обрезано). Это команды, которые я использовал.

ffmpeg -ss 55 -i input.mp4 -t 00:03:06 -vcodec copy -acodec copy out.mp4 
ffmpeg -ss 55 -i input.mp4 -t 00:03:06 out.avi

person mdasari    schedule 09.06.2017    source источник
comment
Пожалуйста, смотрите этот ответ вместо этого. stackoverflow.com/questions/18444194/   -  person bdutta74    schedule 13.08.2018


Ответы (1)


Это невозможно. Либо вам нужно перекодировать видео, либо включить ключевые кадры, необходимые для других кадров, которые на них ссылаются.

Если вы не хотите терять качество, вы можете выводить в файл без потерь (например, YUV, HuffYUV, FFV1, …) или продолжать работать визуально без потерь (например, ProRes, DNxHD, высококачественные H.264/H.265, …).

person slhck    schedule 09.06.2017
comment
Спасибо slhck, я думаю, вы правы, перекодирование необходимо как минимум для без потерь файла YUV. Я надеюсь, что это не будет проблемой, чтобы точно вырезать файл YUV в данный момент времени. Хотя кодирование и декодирование занимает слишком много времени, это неплохая идея, потому что другого выбора нет. - person mdasari; 11.06.2017
comment
Это просто невозможно с ffmpeg или теоретически тоже? Я бы подумал, что, делая каждый кадр ключевым, вы не должны терять качество и по-прежнему резать именно там, где хотите. Скажите, пожалуйста, так ли это, хотя бы в теории? Увы, когда я пытаюсь с ffmpeg -i video.MP4 -to 00:00:20.000 -g 1 cutVideo.MP4 качество кажется хуже, по крайней мере, в VLC. Я также пробовал ffmpeg -i video.MP4 -ss 00:00:15.440 -to 00:00:30.440 -crf 0 losslessVideo.MP4, но это выглядит еще хуже. - person user1323995; 17.10.2019
comment
@ user1323995 Даже теоретически это невозможно. Когда вы делаете кадр ключевым кадром, вы должны перекодировать его. Единственный способ сделать это без потери качества — использовать кодек без потерь. -crf 0 должно работать, и ни в коем случае не должно выглядеть хуже. Если у вас возникла проблема, задайте новый вопрос на странице Super User. Обратите внимание, что есть способ включить в вывод нужные кадры и не отображать их, но не все плееры это поддерживают. - person slhck; 17.10.2019