Я хотел выполнить проверку PSNR для закодированного сегмента, но избегать извлечения сегмента в кодеке без потерь для сравнения. Я просто хотел обрезать ввод, но похоже, что это отключено.
Моя команда:
ffmpeg -i original.mp4 -i segment.mp4 -filter_complex "[0:v]trim=10:20,setpts=PTS-STARTPTS[0v];[1:v]setpts=PTS-STARTPTS[1v];[0v][1v]psnr" -f null -
Это будет проходить через весь исходный входной файл и не обрезать видео в фильтре.
Если я попытаюсь обрезать ввод с помощью -ss
и -t
, будет работать только флаг ввода -ss
. Он установит правильный ввод, но проигнорирует отметку времени -t
.
ffmpeg -ss 10 -i original.mp4 -t 10 -i segment.mp4 -filter_complex [0:v][1:v]psnr -f null -
Различное размещение -t
не будет иметь никакого эффекта.
Я также пытался установить обрезку duration
, сохраняя работающий вход -ss
.
ffmpeg -ss 10 -i original.mp4 -i segment.mp4 -filter_complex "[0:v]trim=duration=10,setpts=PTS-STARTPTS[0v];[1:v]setpts=PTS-STARTPTS[1v];[0v][1v]psnr" -f null -
Я пробовал это с end
и end_frame
, но ни один из них не работал.
То же самое относится, если я использую -lavfi
вместо -filter_complex
.
Я кратко рассмотрел исходный код фильтра PSNR, но не смог найти никаких ссылок на trim
или -t
.
Эта функция заблокирована или я что-то не так делаю?
Был бы альтернативный способ сделать это без кодирования версии без потерь того же сегмента для сравнения?