Как YUV реконструированный файл создается в кодировщике с открытым исходным кодом x.265?
Поскольку кодер x.265 создает восстановленный видеофайл yuv после декодирования, и я знаю, что в кодировщике x.265 с открытым исходным кодом вы вводите необработанное видео yuv, и он генерирует файл HEVC для вас вместе с восстановленным файлом YUV.
У меня вопрос, могу ли я ввести HEVC-файл напрямую для создания восстановленного yuv-файла? Если да, то как?
3 ответа
Нет. Вы не можете вводить файл HEVC непосредственно в кодер HEVC, поскольку кодеры не имеют модулей энтропийного декодирования (в него входят другие модули декодирования, такие как компенсация движения, IDCT, Inverse Qunat и т. Д.). Но весь смысл кодера заключается в кодировании необработанного видео в битовый поток HEVC. Вместо этого вы можете предоставить поток HEVC декодеру HEVC и получить точно такой же восстановленный YUV. Бит-согласующий кодер, реконструированный YUV с декодированным YUV из стандартного декодера, обеспечивает правильную работу кодера
Х.265 - это кодер HEVC, а не декодер. Вы можете использовать ffmpeg или openHEVC для декодирования потока HEVC.
Кодер x.265 выдает восстановленный видеофайл yuv после декодирования
[..]
он генерирует файл HEVC для вас вместе с восстановленным файлом YUV
Позвольте мне прояснить это немного. Да, x265 (и другие кодировщики) могут создавать файл YUV во время кодирования. Тем не менее, это не для целей декодирования. Это для отладки. Целью кодера является создание видеопотока, который может быть декодирован декодером. Для этого кодеру и декодеру необходимо согласовать промежуточный формат обмена, то есть стандартизированный формат потока битов.
Это может показаться очевидным - в данном случае я имею в виду HEVC - но вы должны понимать, что кодировщики (и декодеры) могут иметь ошибки. Как вы находите эти ошибки? Вы тестируете! Как вы тестируете? Вы смотрите на поток битов, сгенерированный кодером, и представление YUV, которое кодер считает, что декодер создал бы при декодировании. Затем вы декодируете файл, используя независимый декодер, и проверяете, что 2 YUV-файла идентичны.
Здесь важно то, что кодировщик фактически не декодировал его. Скорее YUV - это фактическое внутреннее представление битовой карты, которое, по мнению кодера, должно быть восстановлено декодером с учетом выбора блока / режима, указанного в битовом потоке. Кодер никогда не декодируется. Он просто реконструировал битовую карту, как он полагает, что декодер сделал бы, а затем закодировал информацию восстановления в битовом потоке. (А для опорных кадров битовая карта затем используется в качестве целевой ссылки для последующих кодированных кадров.)