Ответ 1
Сравнение декодированных данных с хешем MD5
Вы можете использовать FFmpeg MD5-мультиплексор, чтобы показать, что результаты декодирования имеют точный результат:
-
Получить хеш MD5 видеопотока с вашего исходного ввода:
$ ffmpeg -loglevel error -i original.vid -map 0:v -f md5 - MD5=5ee3ae1ee5feaf30618938290225f682
-
Преобразовать в вывод без потерь:
$ ffmpeg -i original.vid -c:v libx264 -qp 0 lossless.mkv
-
Сравните хэш файл MD5 без потерь:
$ ffmpeg -loglevel error -i lossless.mkv -map 0:v -f md5 - MD5=5ee3ae1ee5feaf30618938290225f682
Примечания:
-
Возможно, вы не получите такой же хэш даже с кодеком без потерь. Могут произойти изменения в различных атрибутах, которые могут изменить хэш MD5, например, цветовое пространство или передискретизацию цвета.
-
Вы можете видеть, что хеш MD5 может измениться, если вы выходите в формат с потерями.
-
Другие бездефектно сжатые видеокодеры, поддерживаемые FFmpeg, включают в себя: ffv1, ffvhuff, huffyuv и utvideo.
-
Смотрите framemd5 muxer, чтобы просмотреть хэш для каждого кадра.
Визуальное сравнение
С фильтром смешивания
Просмотр разницы в выходе с потерями.
Вы можете использовать blend filter, чтобы визуально сравнить разницу.
Использование ffplay
ffplay -f lavfi \
"movie=original.mkv[org]; \
movie=encoded.mkv[enc]; \
[org][enc]blend=all_mode=difference"
-
blend медленнее, и эта команда может не воспроизводиться в реальном времени в зависимости от вашего процессора и входов. В качестве альтернативы вы можете выводить видео с помощью
ffmpeg
, а затем смотреть его, как показано ниже. -
Существуют другие режимы, кроме
difference
, которые могут соответствовать вашим потребностям. См. Документацию .
Использование ffmpeg
ffmpeg -i original.mkv -i encoded.mkv \
-filter_complex "blend=all_mode=difference" \
-c:v libx264 -crf 18 -c:a copy output.mkv
- Вам может потребоваться добавить
,format=yuv420p
в конец вашей filterchain (сразу послеdifference
), чтобы просмотреть результат в проигрывателях, не поддерживающих FFmpeg.