Может ли алгоритм сжатия быть без потерь и с потерями одновременно?

Я видел, что ffmpeg имеет несколько кодеков (например, H.264), которые определены как без потерь и с потерями одновременно, и, насколько я понимаю, без потерь и с потерями являются взаимоисключающими: алгоритм сжатия либо теряет информацию, либо нет.

Как можно быть без потерь и с потерями одновременно?

Бег ffmpeg -codecs 2>/dev/null| grep h264, Я получил:

DEV.LS h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 [...]

DEV.LS расшифровывается как декодер, кодировщик, видео, не только внутрикадровое сжатие, сжатие с потерями, сжатие без потерь.

2 ответа

Проверка в Википедии на H.264 говорит:

H.264 обычно используется для сжатия с потерями в строгом математическом смысле, хотя величина потерь иногда может быть незаметной. Также возможно создать кодирование без потерь, используя его, например, иметь локализованные кодированные без потерь области в кодированных изображениях с потерями или поддерживать редкие случаи использования, для которых все кодирование без потерь.

Да, это может быть как с потерями, так и без потерь одновременно. Когда дело доходит до H.264, MPEG и AVC, цвета, рамки сильно влияют, и это создает проблемы визуального просмотра при увеличении видео. Я также опубликовал исследование об этом --- Проверьте это

Ответ был упомянут @MoDJ в комментариях.

h.264 Кодек, как и многие другие, имеет опции кодирования. Главным среди них является коэффициент постоянной скорости, ака CRF, Документация от FFmpeg (кодировщик, который использует libx264 для кодирования h.264/AVC) является хорошей ссылкой в ​​этом случае. Это говорит:

Диапазон шкалы CRF составляет 0–51, где 0 - без потерь, 23 - по умолчанию, а 51 - худшее возможное качество. Более низкое значение обычно приводит к более высокому качеству, а субъективно вменяемый диапазон составляет 17–28. Считайте 17 или 18 визуально без потерь или почти без; он должен выглядеть так же или почти так же, как входные данные, но он не является технически без потерь.

(...)

Вы можете использовать -crf 0 для создания видео без потерь. Два полезных пресета для этого - сверхбыстрый или очень медленный, так как высокая скорость кодирования или наилучшее сжатие обычно являются наиболее важными факторами. (...)
Обратите внимание, что выходные файлы без потерь, вероятно, будут огромными, и большинство проигрывателей, не основанных на FFmpeg, не смогут декодировать без потерь. Поэтому, если проблема заключается в совместимости или размере файла, не следует использовать без потерь. (...)

Подводя итог: один конкретный поток не может быть одновременно с потерями и без потерь, но то, является ли поток потерянным или без потерь, можно регулировать настройкой кодека.

Другие вопросы по тегам