Можно ли поднять QP H.264 без полной перекодировки видео?

Можно ли понизить качество и битрейт видео H.264 без его полного декодирования и кодирования?

Существуют ли специфичные для H.264 алгоритмы, которые могут создавать видео с более высоким QP на основе закодированного видео с более низким QP?

Какие преобразования вообще доступны для контента H.264? Есть ли инструмент для преобразования без потерь, например, jpegtranдля JPEG?

Ответы (1)

Подобный вопрос уже возникал . Я разместил то же самое в своем ответе там.

Можно ли понизить качество и битрейт видео H.264 без его полного декодирования и кодирования?

Опорные кадры макроблоков H.264 B и P, которые уже были обработаны деблокирующим фильтром. Сила деблокирования адаптивна к QP. Я не уверен, но я думаю, что это приведет к проблемам, если вы просто переквантуете коэффициенты DCT. В любом случае, я думаю, это будет просто спидхак, дающий хуже качество, чем полное декодирование + кодирование. И я не знаю никаких реализаций.

Никто даже не внедрил фильтр битового потока для без потерь преобразования базового уровня h.264 в CABAC. :( Хотя об этом говорили .

Однако в этой статье есть реализация, которая частично декодирует h.264, модифицирует его (для сокрытия данных) и повторно кодирует. IDK, с каким программным обеспечением он начал реализацию, но его код, если он доступен и имеет соответствующую лицензию, может стать хорошей отправной точкой для других фильтров битового потока.

Какие преобразования вообще доступны для контента H.264? Есть ли инструмент для преобразования без потерь, такой как jpegtran для JPEG?

jpegtranработает только потому, что каждый блок коэффициентов DCT полностью независим от всех остальных. Даже кадры H.264 I предсказываются из других блоков в том же кадре. (Внутреннее предсказание, в отличие от межкадрового предсказания в макроблоках P и B). Вращение без потерь или переворачивание, вероятно, невозможно.

(Хотя, например, телефонные камеры могут просто указать с помощью метаданных, что проигрыватель должен вращать видео при воспроизведении, если они удерживаются вертикально во время записи видео.)

У ffmpeg есть фильтр битового потока для h.264, который что-то делает с преобразованием того, как хранится поток h.264, или, может быть, что-то с заголовками? IDK, мне не приходилось его использовать или читать. Из документов:
ffmpeg -i h264.mp4 -c:v copy -bsf:v h264_mp4toannexb -an out.h264

Однако это не похоже на то, о чем вы спрашиваете.

h264_mp4toannexbдовольно прост, он просто преобразует единицы с префиксом длины в единицы с 00 00 00 01префиксом - и сохраняет заголовок в потоке.