FFMPEG, как контролировать количество i-кадров в кодированном видео?

241
Ray

Я хочу перекодировать видео, используя H264, и я хочу контролировать количество i-кадров, содержащихся в перекодированном видео. Я попробовал следующее.

ffmpeg -i video.mp4 -y -c:v libx264 -crf 21 -sc_threshold 40 -c:a copy reencoded_video.mp4 

Это успешно повторно кодирует видео, но я не могу повлиять на количество I-кадров, регулируя -crfи -sc_thresholdзначение, как я проверил с ffprobe. Большую часть времени, и тот же набор I-кадров получены независимо от -crfи -sc_thresholdзначений, установленных я.

Как контролировать (до некоторой степени) количество i-кадров в перекодированном видео? Например, как мне сделать каждый кадр и i-frame? Как мне перекодировать его так, чтобы каждые 2 секунды было около 1 i-кадра?

РЕДАКТИРОВАТЬ

Кажется, я просто не пробовал достаточно большой диапазон -sc_threshold; установка его на 9999 решила проблему. Я до сих пор не могу найти документацию для действительного диапазона -sc_threshold, может ли кто-нибудь указать мне на официальную документацию, которая описывает его действительный диапазон?

0
Некоторые полезные варианты могут быть найдены в этом вопросе: https://superuser.com/questions/908280/what-is-the-correct-way-to-fix-keyframes-in-ffmpeg-for-dash Wumpus Q. Wumbley 6 лет назад 0
Если по какой-либо причине вам требуется кодирование только I-кадра, используйте параметр `-intra` для x264. Хотя, я полагаю, реальный вопрос: какую проблему вы пытаетесь решить? Ваш вопрос выглядит как [xy-problem] (http://xyproblem.info/). slhck 6 лет назад 0

0 ответов на вопрос

Похожие вопросы