Это возможно только (практически) для кодирования видео без потерь.
Без потерь без потерь
Это очень просто сделать то, что вы хотите для кодеков видео без потерь. Многие из них хранят видеоданные попиксельно, в основном в цветовом пространстве YUV. Также каждый кадр стоит сам по себе.
Было бы довольно легко отредактировать такое видео, потому что вы знаете, где находится каждый кадр и где каждая позиция пикселя находится в потоке байтов. Вы можете просто перезаписать части потока байтов без последствий для оставшегося потока. Даже если видео без потерь было арифметически сжато, вы можете сначала распаковать его, отредактировать, а затем снова сжать и сохранить - без проблем.
Так, например, если у вас есть необработанное видео YUV в контейнере AVI, вы можете редактировать его по кадрам и снова сохранять его в YUV в AVI.
Сохранение кодировки с потерями
Но если вы хотите выполнить кодирование видео с потерями - или сохранить исходное кодирование с потерями - после этапа редактирования, это невозможно. С этим связаны две проблемы: сам процесс кодирования и тот факт, что часто кадры зависят друг от друга.
Сжатие с потерями пытается максимально устранить избыточность, удаляя детали, которые человеческий глаз не видит. Это делается в несколько этапов, но самый важный из них включает преобразование области пикселей в частотную область, часто с вариантами дискретного косинусного преобразования.
Этот шаг заключается в том, что он принимает блок, скажем, 8 × 8 пикселей и преобразует его в блок частотных коэффициентов. Из этого блока отбрасываются определенные коэффициенты, что уменьшает объем информации (и, следовательно, сжимает размер), но также отбрасывает визуальную информацию, что снижает качество видео. Какие коэффициенты отбрасываются, зависит от настройки качества кодера. Видео тогда сохраняется не в пикселях, а в виде частотных коэффициентов.
Когда вы хотите отредактировать видео с потерями, вы сначала должны восстановить частотные коэффициенты в попиксельное представление снова (как упомянуто выше). На этом этапе вы можете отредактировать видео и вставить логотип, но как только вы захотите сохранить его снова, вам придется снова выполнить шаг преобразования - и выбросить информацию. Это, по сути, главная причина потери поколения.
Другая проблема заключается в том, что для большинства видео с потерями некоторые кадры зависят от информации, содержащейся в других кадрах. Более конкретно, B- и P-кадры содержат только смещения более ранних (или более поздних) B/P или I-кадров. Если вы изменили содержимое I-кадра, все другие зависимые кадры будут меняться при декодировании, что обычно не то, что вы хотите. Ответ Питера Кордеса ниже подчеркивает этот момент. И действительно, он прав, что в принципе вы можете редактировать видео с потерями в I-кадре на месте, но это будет практически очень трудно сделать.
Итак, очень просто, если вы не можете сохранить видео без потерь, вы не можете редактировать видео на месте, не жертвуя качеством.